#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;

struct DOLL{
	int h;
	int r;
};

int f(vector<DOLL> &d1, vector<DOLL> &d2, int h, int r)
{
	int ans = 0;
	for (DOLL &d : d1){
		if (d.h>h && d.r>r){
			int a = f(d1, d2, d.h, d.r)+1;
			if( a<ans ) break;
			ans = a;
		}
	}
	for (DOLL &d : d2){
		if (d.h>h && d.r>r){
			int a = f(d1, d2, d.h, d.r)+1;
			if( a<ans ) break;
			ans = a;
		}
	}
	return ans;
}

int main() {

	while (true){
		vector<DOLL> d1;
		vector<DOLL> d2;
		int n,m;

		cin >> n;
		if (n == 0) break;

		for (int i = 0; i<n; i++){
			DOLL d;
			cin >> d.h >> d.r;
			d1.push_back(d);
		}

		cin >> m;

		for (int i = 0; i<m; i++){
			DOLL d;
			cin >> d.h >> d.r;
			d2.push_back(d);
		}

		int ans = f(d1, d2, 0, 0);
		cout << ans << endl;
	}

	return 0;
}