from sys import stderr perr=lambda x:stderr.write(str(x)+"\n") class INPUT: def __init__(self): self._l=open(0).read().split() self._length=len(self._l) self._index=0 return def stream(self,k=1,f=int,f2=False): assert(-1 return left all #listを変数で受け取るとき、必ずlistをTrueにすること。 class dsu: def __init__(self,n): assert n>0,"n must be Natural" self.n=n self.parents=[-1]*n return def find(self,x): assert xself.parents[y]: x,y=y,x self.parents[x]+=self.parents[y] self.parents[y]=x return def size(self,x): assert x0: if S[i-1]==T[j-1]: ans.append(S[i-1]) i-=1 j-=1 length-=1 elif dp[i][j]==dp[i-1][j]: i-=1 else: j-=1 return len(ans[::-1]) def main(): N,M,Q=pin(3) assert(1<=N<=1000) assert(1<=M<=1000) assert(1<=Q<=N*M) uf=dsu(N+M) validation_set=set() for _ in[0]*Q: a,b=pin(2) assert(1<=a<=N) assert(1<=b<=M) validation_set.add((a,b)) uf.merge(a-1,N+b-1) assert(len(validation_set)==Q) A=list(range(0,N)) B=list(range(N,N+M)) g=uf.groups() for i in g: for j in i: if j