n,m,q = map(int,input().split()) l1,l2 = [],[] for _ in range(q): a,b = map(int,input().split()) l1.append((a,b)) l2.append((b,a)) import bisect def lis(l): l.sort(key = lambda x:(x[0],x[1])) flg = 0 ll = [] for i in range(q): if l[i][0] != flg: ll.append(l[i][1]) nn = len(ll) dp = [] for i in range(nn): idx = bisect.bisect(dp,ll[i]) # print(i,ll[i],idx,dp) if idx == len(dp): dp.append(ll[i]) else: dp[idx] = ll[i] # print(l,dp) return len(dp) print(max(lis(l1),lis(l2)))