module mdl contains recursive function qsort(a)result(res) implicit none integer,intent(in)::a(:) integer::res(size(a)) if(size(a)<=1)then res=a return end if res=[qsort(pack(a(2:),a(2:)=a(1)))] end function qsort end module program main use mdl implicit none integer::i,j,k,l,m,cnt1=0,cnt2=0,N,W,H integer,allocatable::a(:),b(:) integer::ans read*,W read*,H read*,N allocate(a(N)) allocate(b(N)) do i=1,N read(*,*)a(i),b(i) end do a=qsort(a) b=qsort(b) do i=1,N if(i+1<=N.and.a(i)==a(i+1))cycle cnt1=cnt1+1 end do do i=1,N if(i+1<=N.and.b(i)==b(i+1))cycle cnt2=cnt2+1 end do ans=H*W-(W-cnt1)*(H-cnt2)-N print*,ans end program main