#include <iostream>
#define inf 9999999999
using namespace std;
int f;//农场的数量
int n,m,w;//每个农场有n块地,m条路,w个虫洞
int all;
struct field
{
int a;//起点
int b;//终点
int c;//权重
}fie[5200];
bool flag;
int dis[1001];
bool bellman()
{
memset(dis,inf,sizeof(dis));
for(int i=0;i<n;i++)
{
flag=false;
for(int j=0;j<all;j++)
if(dis[fie[j].a]>dis[fie[j].b]+fie[j].c)
{
dis[fie[j].a]=dis[fie[j].b]+fie[j].c;
flag=true;
}
if(!flag)
break;
}
for(int j=0;j<all;j++)
if(dis[fie[j].a]>dis[fie[j].b]+fie[j].c)
return true;
return false;
}
int main()
{
int a_temp,b_temp,c_temp;
int a_worm,b_worm,c_worm;
cin>>f;
while(f--)
{
cin>>n>>m>>w;
all=0;
for(int k=0;k<m;k++)
{
cin>>a_temp;
cin>>b_temp;
cin>>c_temp;
fie[all].a=a_temp;
fie[all].b=b_temp;
fie[all++].c=c_temp;
fie[all].a=b_temp;
fie[all].b=a_temp;
fie[all++].c=c_temp;
}
for(int k=0;k<w;k++)
{
cin>>a_worm>>b_worm>>c_worm;
fie[all].a=a_worm;
fie[all].b=b_worm;
fie[all++].c=-c_worm;//权值为负数
}
if(bellman())
cout<<"YES"<<endl;
else
cout<<"NO"<<endl;
}
return 0;
}