#include<bits/stdc++.h>
using namespace std;
int l[1000000],n,dep[1000000],f[1000000][30],q;
vector<int>a[1000000];
void dfs(int son,int fa)
{
f[son][0]=fa;
dep[son]=dep[fa]+1;
for(int i=1;i<=l[dep[son]];i++) f[son][i]=f[f[son][i-1]][i-1];
for(int i=0;i<a[son].size();i++)
if(a[son][i]!=fa) dfs(a[son][i],son);
}
int LCA(int x,int y)
{
if(dep[x]<dep[y]) swap(x,y);
while(dep[x]>dep[y]) x=f[x][l[dep[x]-dep[y]]-1];
if(x==y) return x;
for(int i=l[dep[x]-1];i>=0;i--)
if(f[x][i]!=f[y][i]) x=f[x][i],y=f[y][i];
return f[x][0];
}
void clean()
{
for(int i=1;i<=n;i++)
{
a[i].clear();
dep[i]=0;
for(int j=1;j<=30;j++) f[i][j]=0;
}
}
int main()
{
int t,d;
cin>>d>>t;
for(int i=1;i<=1e6;i++) l[i]=l[i-1]+(1<<l[i-1]==i);
while(t--)
{
scanf("%d%d",&n,&q);
for(int i=1;i<n;i++)
{
int u,v;
scanf("%d%d",&u,&v);
a[u].push_back(v);
a[v].push_back(u);
}
dfs(1,0);
while(q--)
{
int x,y,da,db;
scanf("%d%d%d%d",&x,&y,&da,&db);
int ans=LCA(x,y);
int dis=dep[x]-2*dep[ans]+dep[y];
if(da>=dis) cout<<"Zayin";
else if(da>db) cout<<"Zayin";
else if(da==db) cout<<"draw";
else cout<<"Ziyin";
cout<<endl;
}
clean();
}
}