#include<bits/stdc++.h>
#define int long long
using namespace std;
int t,tot,n,m,cnt,h[1005];
struct edge{
int v,nxt;
double w;
}e[200005];
void adde(int u,int v,double w){
e[++cnt].nxt=h[u];
h[u]=cnt;
e[cnt].w=w;
e[cnt].v=v;
}
double dis[1005];
bool f,vis[1005];
void dfs(int x,double cnt){
if(f)return;
if(vis[x]){
if(fabs(cnt-dis[x])>1e-4)f=1;
return;
}
vis[x]=1;
dis[x]=cnt;
for(int i=h[x];i;i=e[i].nxt){
dfs(e[i].v,cnt*e[i].w);
if(f)return;
}
}
signed main()
{
scanf("%lld",&t);
while(t--){
scanf("%lld%lld",&n,&m);
memset(vis,0,sizeof(vis));
memset(dis,0,sizeof(dis));
f=cnt=0;
for(int i=1,u,v,x,y;i<=m;i++){
scanf("%lld%lld%lld%lld",&u,&v,&x,&y);
adde(u,v,y*1.0/x);
adde(v,u,x*1.0/y);
}
for(int i=1;i<=n;i++){
if(!vis[i]){
dfs(i,1);
if(f)break;
}
}
printf("Case #%lld: ",++tot);
puts(f?"No":"Yes");
}
return 0;
}
样例是过了的,但没分