#include<bits/stdc++.h>
#define mkp make_pair
using namespace std;
int f[1000000][100],d[1000000],ans=-1,a[100005],lg[100005];
int ver[1000000],Next[1000000],head[1000010];
bool flag;
int n,m,tot,t;
queue<int> q;
void add(int x ,int y)
{
ver[++tot]=y,Next[tot]=head[x],head[x]=tot;
}
void bfs()
{
q.push(1),d[1]=1;
while(!q.empty())
{
int x=q.front();q.pop();
for(int i=head[x];i;i=Next[i])
{
int y=ver[i];
if(d[y])continue;
d[y]=d[x]+1;
f[y][0]=x;
for(int j=1;j<=lg[d[y]]+1;j++)f[y][j]=f[f[y][j-1]][j-1];
q.push(y);
}
}
}
int lca(int x,int y)
{
if(d[x]>d[y])swap(x,y);
while (d[y] > d[x]) y = f[y][lg[d[y]-d[x]]];
if(x==y)return x;
for(int i=lg[d[x]];i>=0;i--)
if(f[x][i]!=f[y][i])x=f[x][i],y=f[y][i];
return f[x][0];
}
bool vis[100005];
int dis(int x,int y)
{
return d[x]+d[y]-2*d[lca(x,y)];
}
int main()
{
cin>>n>>m;
for (int i=2; i<=n; i++)
lg[i] = lg[i-1] + ((1<<(lg[i-1]+1)) == i);
tot=0;
for(int i=1;i<n;i++)
{
int x,y;
cin>>x>>y;
add(x,y);
add(y,x);
}
bfs();
while(m--)
{
for(int i=1;i<=n;i++)a[i]=0,vis[i]=0;
int u,v,w,x;
cin>>u>>v>>w>>x;
int l1=lca(u,v);
int l2=lca(w,x);
if(dis(l1,w)+dis(l1,x)==dis(w,x) || dis(l2,u)+dis(l2,v)==dis(u,v))
{
cout<<"Y\n";
}
else
{
cout<<"N\n";
}
}
}