for( int i = 1; i <= n2; ++ i ) a[i] = ++ tot; for( int i = 1; i <= n1; ++ i ) bi[i] = ++ tot; for( int i = 1; i <= n1; ++ i ) bo[i] = ++ tot; for( int i = 1; i <= n3; ++ i ) c[i] = ++ tot;
int S = ++ tot, T = ++ tot; init( T );
for( int i = 1; i <= n2; ++ i ) { add_edge( S, a[i], 1 ); }
for( int i = 1; i <= n1; ++ i ) { add_edge( bi[i], bo[i], 1 ); }
for( int i = 1; i <= n3; ++ i ) { add_edge( c[i], T, 1 ); }
int m1 = read( ); for( int i = 1; i <= m1; ++ i ) { int u = read( ), v = read( ); add_edge( a[v], bi[u], 1 ); }
int m2 = read( ); for( int i = 1; i <= m2; ++ i ) { int u = read( ), v = read( ); add_edge( bo[u], c[v], 1 ); }