#include <stdio.h>
#include <string.h>
#include <queue>
#define N 505
#define INF 0x3f3f3f3f
using namespace std;
int book[N];
int dis[N][N];
int dist[N];
int n,m,w;
int dig[N];
queue<int > q;
void init(){
memset(book,0,sizeof book);
memset(dis,0,sizeof dis);
memset(dist,0,sizeof dist);
memset(dig,0,sizeof dig);
for(int i=0;i<n;i++){
for(int j=0;j<n;j++){
dis[i][j]= i==j?0:INF;
}
}
for(int i=0;i<n;i++){
dist[i] = INF;
}
}
int spfa(int s){
while(!q.empty()) q.pop();
q.push(s);
dig[s]++;
book[s]=1;
dist[s]=0;
while(!q.empty()){
int temp = q.front();
q.pop();
for(int i=0;i<n;i++){
if(dist[i] > dist[temp] + dis[temp][i]){
dist [i] = dist[temp] + dis[temp][i];
if(!book[i]){
q.push(i);
book[i] = 1;
dig[i] ++;
if(dig[i] >= n){
return 0;
}
}
}
}
}
return 1;
}
int main(){
int t;
scanf("%d",&t);
while(t--){
init();
scanf("%d%d%d",&n,&m,&w);
int t1,t2,t;
for(int i=0;i<m;i++){
scanf("%d%d%d",&t1,&t2,&t);
dis[t1][t2] = t;
dis[t2][t1] = t;
}
for(int i=0;i<w;i++){
scanf("%d%d%d",&t1,&t2,&t);
dis[t1][t2] = -t;
}
if(spfa(1)){
printf("YES\n");
}else{
printf("NO\n");
}
}
return 0;
}