#include <iostream>
#include <vector>
#include <queue>
using namespace std;
const int N=104;
const int INF=100000000;
int main()
{
	int t;
	cin>>t;
	for(int k=1;k<=t;++k)
	{
		vector<int> graph(N,0);
		vector<bool> mark(N,false);
		int n,m;
		cin>>n;
		for(int i=0;i<n;++i)
		{
			int a,b;
			cin>>a>>b;
			graph[a]=b;
		}
		cin>>n;
		for(int i=0;i<n;++i)
		{
			int a,b;
			cin>>a>>b;
			graph[a]=b;
		}
		queue< pair<int,int> > q;
		int ans=INF;
		q.push(make_pair(1,0));
		mark[1]=true;
		while(!q.empty())
		{
			pair<int,int> p=q.front();
			if(p.first==100)
			{
				ans=p.second;
				break;
			}
			q.pop();
			for(int i=1;i<=6;++i)
			{
				int x=p.first+i;
				if(x>100)
					continue;
				if(mark[x]==false)
				{
					mark[x]=true;
					if(graph[x]==0)
						q.push(make_pair(x,p.second+1));
					else
					{
						x=graph[x];
						mark[x]=true;
						q.push(make_pair(x,p.second+1));
					}
				}
			}

		}
		if(ans==INF)
			cout<<-1<<endl;
		else
			cout<<ans<<endl;

	}
}