#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int inf=1e9+7;
int n,m,w;
int e[505][505];
bool floyd()
{
int t;
for(int k=1; k<=n; k++)
for(int i=1; i<=n; i++)
{
for(int j=1; j<=n; j++)
{
t=e[i][k]+e[k][j];//不要直接用min函数,会超时
if(t<e[i][j]) e[i][j]=t;
}
if(e[i][i]<0) return 1;
}
return 0;
}
int main()
{
int t;
scanf("%d",&t);
while(t--)
{
cin>>n>>m>>w;//m条无向路,w条虫洞(单向)
for(int i=1; i<=n; i++)
for(int j=1; j<=n; j++)
i==j? e[i][i]=0:e[i][j]=inf;
int a,b,ll;
for(int i=1; i<=m; i++)
{
scanf("%d%d%d",&a,&b,&ll);
if(ll<e[a][b]) e[a][b]=e[b][a]=ll;
}
for(int i=1; i<=w; i++)
{
scanf("%d%d%d",&a,&b,&ll);
e[a][b]=-ll;
}
floyd()? printf("YES\n"):printf("NO\n");
}
return 0;
}