#include using namespace std; const int INF = 10000; int main(){ int N, M, Q; cin >> N >> M >> Q; vector a(Q), b(Q); for (int i = 0; i < Q; i++){ cin >> a[i] >> b[i]; a[i]--; b[i]--; } vector> b2(N); for (int i = 0; i < Q; i++){ b2[a[i]].push_back(b[i]); } for (int i = 0; i < N; i++){ sort(b2[i].begin(), b2[i].end(), greater()); } vector x; for (int i = 0; i < N; i++){ int cnt = b2[i].size(); for (int j = 0; j < cnt; j++){ x.push_back(b2[i][j]); } } vector dp(Q, INF); for (int i = 0; i < Q; i++){ *lower_bound(dp.begin(), dp.end(), x[i]) = x[i]; } cout << lower_bound(dp.begin(), dp.end(), INF) - dp.begin() << endl; }