#include<bits/stdc++.h>
using namespace std;
const int N = 500010;
struct edge{
int to;
int dis;
edge(int a,int b){
to = a;
dis = b;
}
};
int t;
int n,m,w;
queue<int> que;
vector<edge> g[N];
int dis[N],cnt[N],exist[N];
int spfa(int s){
memset(cnt,0,sizeof(cnt));
memset(dis,0x3f,sizeof(dis));
memset(exist,0,sizeof(exist));
dis[s] = 0;
que.push(s);
exist[s] = 1;
while(!que.empty()){
int x = que.front();
que.pop();
exist[x] = 0;
for(int i = 0 ; i < g[x].size() ; i++){
int y = g[x][i].to;
int w = g[x][i].dis;
if(dis[y] > dis[x] + w){
dis[y] = dis[x] + w;
cnt[y]++;
if(cnt[y] > n){
return 1;
}
if(!exist[y]){
que.push(y);
exist[y] = 1;
}
}
}
}
return 0;
}
int main(){
ios::sync_with_stdio(0),cin.tie(0);
cin >> t;
while(t--){
cin >> n >> m >> w;
for(int i = 1; i <= N ; i++){
g[i].clear();
}
while(m--){
int u,v,p;
cin >> u >> v >> p;
g[u].push_back(edge(v,p));
g[v].push_back(edge(u,p));
}
while(w--){
int u,v,p;
cin >> u >> v >> p;
g[u].push_back(edge(v,-p));
}
if(spfa(1)){
cout << "YES" << endl;
}
else cout << "NO" << endl;
}
return 0;
}