#include <cstdio>
#include <cstring>
#define MAX(a,b)((a)>=(b)?(a):(b))
int n,m,h[200],r[200],memo[200];
int solve(int x) {
	if(memo[x]!=-1)return memo[x];
	int max_d=0;
	for(int i=0;i<(n+m);i++) {
		if(h[x]>h[i]&&r[x]>r[i]) {
			max_d=MAX(max_d,1+solve(i));
		}
	}
	return memo[x]=max_d;
}
int main() {
	while(scanf("%d",&n),n) {
		for(int i=0;i<n;i++) {
			scanf("%d %d",&h[i],&r[i]);
		}
		scanf("%d",&m);
		for(int i=0;i<m;i++) {
			scanf("%d %d",&h[i+n],&r[i+n]);
		}
		memset(memo,-1,sizeof(memo));
		int max_d=0;
		for(int i=0;i<(n+m);i++) {
			max_d=MAX(max_d,1+solve(i));
		}
		printf("%d\n",max_d);
	}
}