//LIS
#include<iostream>
using namespace std;
int main(){
  int n,h1[101],r1[101],m,h2[101],r2[101],k;
  int data[201],data2[201],dp[201];

  data[0]=data2[0]=0;

  
  while(cin >>n && n!=0){
    dp[0]=0;

    k=0;
    for(int i=1;i<=n;i++){
      cin >>h1[i]>>r1[i];
      data[i]=h1[i];data2[i]=r1[i];}
    cin >>m;
    for(int i=1;i<=m;i++){
      cin >>h2[i]>>r2[i];
      data[i+n]=h2[i];data2[i+n]=r2[i];}
    int key;
    for(int i=1;i<n+m+1;i++){
      key=i;
      for(int j=i;j<n+m+1;j++){
	if(data[key]>data[j])key=j;}
      swap(data[i],data[key]);
      swap(data2[i],data2[key]);}

    for(int i=1;i<n+m+1;i++){
      key=0;
      for(int j=0;j<i;j++){
	
	if( (  data[j]<data[i] && data2[j]<data2[i] )  && dp[j]>dp[key]) {
	  key=j;
	}
      }
      dp[i] = dp[key]+1;
    }
   
    for(int i=1;i<n+m+1;i++){
      if(dp[i]>k)k=dp[i];

    }
    cout<<k<<endl;
    /*
	for(int i=0;i<n+m+1;i++){
      cout<<dp[i]<<endl;
      cout<<data[i]<<" "<<data2[i]<<endl;}
    */
  }
}
    
    
  
  