#include using namespace std; typedef long long ll; typedef pair p_ll; template void debug(T itr1, T itr2) { auto now = itr1; while(now=0; i--) #define popcount __builtin_popcount const ll LLINF = pow(2,61)-1; const ll INF = pow(2,30)-1; ll gcd(ll a, ll b) { if (a> N >> M >> Q; vector a(Q), b(Q); rep(i,Q) { cin >> a[i] >> b[i]; a[i]--; b[i]--; } vector> ok(N, vector(M)); rep(i,Q) ok[a[i]][b[i]]++; assert(1<=N && N<=1000); assert(1<=M && M<=1000); assert(1<=Q && Q<=N*M); rep(i,N) rep(j,M) assert(ok[i][j]<=1); vector> dp(N+1, vector(M+1)); rep(i,N+1) rep(j,M+1) { if (i!=N) chmax(dp[i+1][j], dp[i][j]); if (j!=M) chmax(dp[i][j+1], dp[i][j]); if (i!=N && j!=M) { if (ok[i][j]) chmax(dp[i+1][j+1], dp[i][j]+1); else chmax(dp[i+1][j+1], dp[i][j]); } } // rep(i,N+1) debug(all(dp[i])); cout << dp[N][M] << endl; return 0; }