#include using namespace std; #include using namespace atcoder; #define int long long int dp[5009][5009]; signed main(){ int h,w,n;cin>>h>>w>>n; dsu d(h+w); vector h1(h+w,-1),w1(h+w,-1); for(int i=0;i>a>>b; a--;b--; d.merge(a,b+h); h1[d.leader(a)]=a; w1[d.leader(a)]=b; } vector hs(h+w),ws(h+w); for(int i=0;i1){ int li=d.leader(i); int z1=hs[li]; int z2=ws[li]; dp[i+1][j+z2]=max(dp[i+1][j+z2],dp[i][j]+z1*w+z2*h-2*z1*(j+z2)); } } } // for(int i=0;i