from bisect import bisect # N: 数列の長さ # A[i]: a_i の値 def solve(N, A): INF = 10**10 dp = [INF]*(N+1) dp[0] = -1 for a in A: idx = bisect(dp, a-1) dp[idx] = min(a, dp[idx]) return max(i for i in range(N+1) if dp[i] < INF) N,M,Q = map(int, input().split()) WH = [] for i in range(Q): WH.append(list(map(int,input().split()))) WH = sorted(WH,reverse=True,key=lambda x:x[1]) WH = sorted(WH,key=lambda x:x[0]) H = [] for w,h in WH: H.append(h) print(solve(N,H))