//农田里有M条路,有W条虫洞。。判断有没有负环。。用Bellman-ford算法。。
#include <iostream>
using namespace std;
#define MAX 999999
#define EDGE_MAX 50000 //边数最大值
#define VER_MAX 10000 //顶点个数最大值
struct Edge
{
int x,y,v; //边:起点、终点、权值
};
Edge edge[EDGE_MAX]; //存储所有的边
int m; //实际边的个数
int n; //顶点个数
int W;
int i,j,k,t;
int dist[100000];
bool bellman_ford(int k)
{
for(i=1;i<=n;++i)
dist[i] = 0;
for(i=1;i<n;++i)
{
for (j=0;j<k;++j)
if (dist[edge[j].y]>dist[edge[j].x]+edge[j].v)
dist[edge[j].y]=dist[edge[j].x]+edge[j].v;
}
for (j=0;j<k;++j)
if (dist[edge[j].y]>dist[edge[j].x]+edge[j].v)
return 1;
return 0;
}
int main()
{
int f;
scanf("%d",&f);
while(f--)
{
scanf("%d%d%d",&n,&m,&W);
int k=0;
for(i=0;i<m;i++)
{
int a,b,c;
cin>>a>>b>>c;
edge[k].x=a;edge[k].y=b;edge[k++].v=c;
edge[k].x=b;edge[k].y=a;edge[k++].v=c;
}
for(i=0;i<W;i++)
{
int a,b,c;
cin>>a>>b>>c;
edge[k].x=a;edge[k].y=b;
edge[k++].v=-c;
}
if(bellman_ford(k))
cout<<"YES"<<endl;
else
cout<<"NO"<<endl;
}
return 0;
}