#include using namespace std; #define rep(i,n) for(int i=0; i<(n); i++) #define INF ((1LL<<62)-(1LL<<31)) #define all(a) (a).begin(),(a).end() #define rall(a) (a).rbegin(),(a).rend() typedef long long ll; typedef pair pl; int main() { ll n,m,q; cin >> n >> m >> q; vector a(q),b(q),c(q,INF); rep(i,q) cin >> a[i] >> b[i]; ll ma=0; rep(i,q) { ll pos=lower_bound(all(c),a[i])-c.begin(); c[pos]=a[i]; ma=max(ma,pos+1); } vector p; rep(i,ma) rep(j,q) if(c[i]==a[j]) p.push_back({a[j],-b[j]}); sort(all(p)); ll ans=0; c.assign(q,INF); rep(i,(int)p.size()) { ll pos=lower_bound(all(c),-p[i].second)-c.begin(); c[pos]=-p[i].second; ans=max(ans,pos+1); } cout << ans << endl; return 0; }