def aa(uf,m): c=[] while m!=uf[m]: c.append(m) m=uf[m] for i in c: uf[i]=m return m n,d,w=map(int,input().split()) uf1=[i for i in range(n)] x1=[1]*n for i in range(d): a,b=map(int,input().split());a-=1;b-=1 a,b=aa(uf1,a),aa(uf1,b) if a==b: continue uf1[b]=a x1[a]+=x1[b] uf2=[i for i in range(n)] x2=[1]*n z=[0]*n;ans=0 for i in range(w): a,b=map(int,input().split());a-=1;b-=1 a,b=aa(uf2,a),aa(uf2,b) if a==b: continue uf2[b]=a x2[a]+=x2[b] y=[set() for i in range(n)] for i in range(n): a,b=aa(uf1,i),aa(uf2,i) if b in y[a]: continue z[a]+=x2[b];y[a].add(b) for i in range(n): if aa(uf2,i) not in y[aa(uf1,i)]: z[aa(uf1,i)]+=1 for i in range(n): ans+=z[i]*x1[i] print(ans-n)