#include<bits/stdc++.h>
using namespace std;
#define ll long
int main()
{
    int t;
    cin>>t;
  while(t--){
  
      long long int n,x,y,i,depth=0,l=0,m,k,r,solo[n+9],f=0,level[n+9];
      scanf("%lld %lld %lld",&n,&r,&m); 
     vector<vector<long long int> >adj(n+1);
     vector<long long int>::iterator it;
     for(i=0;i<r;i++)
     {
        scanf("%lld %lld",&x,&y);
        adj[x].push_back(y);
        adj[y].push_back(x);
     }
     for(i=1;i<=n;i++)
     solo[i]=-1;
     
     for(i=0;i<m;i++)
     {
     	cin>>x>>y;
     	solo[x]=y;
	 }
     
 bool visited[n];
queue<long long int>mystack;
long long int s;
for(i=1;i<=n;i++)
{
    visited[i]=false;
level[i]=0;
}

for(i=1;i<=n;i++)
{
	
if(solo[i]!=-1 && visited[i]==false){

s=i;

mystack.push(s);
visited[s]=true;
level[s]=0;
while(!mystack.empty())
{
	
	
    s=mystack.front();
    mystack.pop();
if(level[s]>=solo[i])
{
	break;}

    for(it=adj[s].begin();it<adj[s].end();it++)
    {
        if(visited[*it]==false)
        {
            level[*it]=level[s] +1; 
          visited[*it]=true;
            mystack.push(*it);
            
           
        }
else
{
 f=1;}
    }
    
  
}


}


} 
if(f==1)
{
	cout<<"No\n";
}
else cout<<"Yes\n";
}
}
