#include <bits/stdc++.h>

using namespace std;

#define FOR(i,a,b) for(int i=(a);i<(b);i++)
#define REP(i,a) FOR(i,0,a)

const int MAX_N=100,MAX_M=100,INF=1e8;

struct P{
	int h,r;
	P(){};
	P(int h,int r):h(h),r(r){};
	bool operator < (const P &a)const{
		if (h!=a.h){
			return h<a.h;
		}
		return r>a.r;
	}
};

int N,M;
P pa[MAX_N+MAX_M];

int dp[MAX_N+MAX_M+1];

int main(){
	do{
		scanf("%d",&N);
		if (N){
			int h,r;
			REP(i,N){
				scanf("%d %d",&h,&r);
				pa[i]=P(h,r);
			}
			scanf("%d",&M);
			REP(i,M){
				scanf("%d %d",&h,&r);
				pa[N+i]=P(h,r);
			}
			sort(pa,pa+N+M);
			fill(dp,dp+N+M+1,INF);
			REP(i,N+M){
				int ra=pa[i].r;
				*lower_bound(dp,dp+N+M+1,ra)=ra;
			}
			printf("%d\n",(int)(lower_bound(dp,dp+N+M+1,INF)-dp));
		}
	}while (N);
	return 0;
}