#include<bits/stdc++.h>
using namespace std;
const int MAXN=1e6+1000;
int hd[MAXN],nxt[MAXN],to[MAXN],f[MAXN][30],dep[MAXN],fnn[MAXN][30];
int d,T,n,q,cnt,maxn;
bool vis[MAXN];
void add(int u,int v)
{
++cnt;
to[cnt]=v;
nxt[cnt]=hd[u];
hd[u]=cnt;
}
void dfs(int x,int fa)
{
vis[x]=true;
for(int i=1;i<=log2(n);i++)
{
f[x][i]=f[f[x][i-1]][i-1];
fnn[x][i]=fnn[f[x][i-1]][i-1]+fnn[x][i-1];
}
for(int i=hd[x];i;i=nxt[i])
{
if(vis[to[i]])
{
continue ;
}
dep[to[i]]=dep[x]+1;
f[to[i]][0]=x;
fnn[to[i]][0]=1;
dfs(to[i],x);
}
return ;
}
int main()
{
scanf("%d%d",&d,&T);
int u,v;
for(int i=1;i<=T;i++)
{
cnt=0;
scanf("%d%d",&n,&q);
for(int j=1;j<n;j++)
{
scanf("%d%d",&u,&v);
add(u,v);
add(v,u);
}
dep[1]=1;
dfs(1,0);
for(int j=1;j<=q;j++)
{
int s,t,da,db,lca=0;
long long sum=0;
scanf("%d%d%d%d",&s,&t,&da,&db);
if(dep[s]<dep[t])swap(s,t);
for(int c=log2(n);c>=0;c--)
{
if(dep[f[s][c]]>=dep[t])
{
sum+=fnn[s][c];
s=f[s][c];
}
}
if(s!=t)
{
for(int c=log2(n);c>=0;c--)
{
if(f[s][c]!=f[t][c])
{
sum+=fnn[s][c]+fnn[t][c];
s=f[s][c];
t=f[t][c];
}
}
sum+=fnn[s][0]+fnn[t][0];
}
if(sum<=da||da>db)
{
printf("Zayin\n");
}
else if(da==db)
{
printf("Draw\n");
}
else
{
printf("Ziyin\n");
}
}
for(int j=0;j<=n;j++)
{
hd[j]=0,hd[j*2]=0;
vis[j]=false,dep[j]=0;
for(int k=0;k<=log2(n);k++)
{
f[j][k]=fnn[j][k]=f[j][k]=fnn[j][k]=0;
}
}
}
return 0;
}