#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)); repr(i,1,N+1) repr(j,1,M+1) { chmax(dp[i][j], dp[i-1][j]); chmax(dp[i][j], dp[i][j-1]); if (ok[i-1][j-1]) chmax(dp[i][j], dp[i-1][j-1]+1); } // rep(i,N+1) debug(all(dp[i])); cout << dp[N][M] << endl; return 0; }