#include
#include<bits/stdc++.h>
#include
using namespace std;
long long int sum=0;
int count=0;
void insertedge(vectoradj[], int u, int v){
adj[u].push_back(v);
adj[v].push_back(u);
}
void printedge(vectoradj[], int v){
for(int i=0;i<v;i++){
for(int j=0;j<adj[i].size();j++){
cout<<i<<" β<<adj[i][j]<<β β;
}
cout<<β\n";
}
}
void bfs(vector< int>adj[],int s, int v){
unordered_map< int, int>dist;
for(long long int i=0;i<=v;i++){
dist[i]=INT_MAX;
}
int vis[v+1]={0};
dist[s]=0;
queueq;
q.push(s);
vis[s]=1;
while(!q.empty()){
int r=q.front();
q.pop();
for( int j=0;j<adj[r].size();j++){
if(vis[adj[r][j]]){
if(dist[adj[r][j]]>dist[r]+1){
dist[adj[r][j]]=dist[r]+1;
}
}
else{
vis[adj[r][j]]=1;
q.push(adj[r][j]);
dist[adj[r][j]]=dist[r]+1;
}
}
}
cout<<dist[30];
}
int main(){
int n;
cin>>n;
for(int i=0;i<n;i++){
int m;
int b,c;
cin>>m;
cin>>b>>c;
int a[m]={0};
vector< int>adj[m+1];
for(int j=0;j<b+c;j++){
int p,q;
cin>>p>>q;
a[p]=q;
}
for(int j=0;j<m;j++){
for(int k=1;k<=6;k++){
int t=j+k;
t=t+a[t];
if(t<=m){
insertedge(adj,j,t);
}
}
}
bfs(adj,0,m);
}
return 0;
}