#include<bits/stdc++.h>
using namespace std;
#define pii pair<int,int>
const int N=1e5+5;
int tcase;
int n,m,ww;
vector<pii> g[N];
bool vis[N];
int dis[N];
int cnt[N];
void add_edge(int x,int y,int z){
g[x].push_back({y,z});
}
queue<int> qq;
void spfa(){
memset(vis,0,sizeof(vis)),memset(cnt,0,sizeof(cnt));
memset(dis,0x3f,sizeof(dis));
queue<int> q;
vis[n+1]=cnt[n+1]=1;
dis[n+1]=0;
q.push(n+1);
while(!q.empty()){
int u=q.front();
q.pop();
vis[u]=0;
for(auto [v,w]:g[u]){
if(dis[v]>dis[u]+w){
dis[v]=dis[u]+w;
cnt[v]=cnt[u]+1;
if(cnt[v]>n){
cout<<"YES\n";
return;
}
if(!vis[v]){
vis[v]=1;
q.push(v);
}
}
}
}
cout<<"NO\n";
}
signed main(){
cin.tie(0);
cout.tie(0);
ios_base::sync_with_stdio(0);
cin>>tcase;
while(tcase--){
cin>>n>>m>>ww;
for(int i=1;i<=m;i++){
int x,y,z;
cin>>x>>y>>z;
add_edge(x,y,z);
add_edge(y,x,z);
add_edge(x,n+1,0);
add_edge(n+1,x,0);
add_edge(y,n+1,0);
add_edge(n+1,y,0);
}
for(int i=1;i<=ww;i++){
int x,y,z;
cin>>x>>y>>z;
add_edge(x,y,-z);
add_edge(x,n+1,0);
add_edge(n+1,x,0);
add_edge(y,n+1,0);
add_edge(n+1,y,0);
}
spfa();
for(int i=1;i<=n+1;i++){
g[i].clear();
}
}
return 0;
}
rt