#include <bits/stdc++.h>
using namespace std;
const int N = 500005;
int n,m,s,d[N];
int LCA[N][22],dis[N];
vector<int> g[N];
void dfs(int cur,int dep){
d[cur] = dep;
for(int i = 0;i < g[cur].size();i ++){
int y = g[cur][i];
if(d[y] == 0)
LCA[y][0] = cur,dis[y]=dis[cur]+1,dfs(y,dep+1);
}
return ;
}
void init(){
for(int j = 1;j <= 20;j ++)
for(int i = 1;i <= n;i ++)
LCA[i][j] = LCA[LCA[i][j-1]][j-1];
}
int lca(int a, int b)
{
if(d[a] < d[b]) swap(a,b);
int sum = d[a] - d[b];
for(int i = 20;i >= 0;i --)
if(sum >= (1 << i))
sum -= (1 << i),
a = LCA[a][i];
if(a == b) return a;
for(int i = 20;i >= 0;i --)
if(LCA[a][i] != LCA[b][i])
a = LCA[a][i],b = LCA[b][i];
return LCA[a][0];
}
int dist(int a,int b){
return dis[a]+dis[b]-2*dis[lca(a,b)];
}
int main()
{
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
cin >> n >> m;
for(int i = 1;i < n;i ++){
int x,y;
cin >> x >> y;
g[x].push_back(y);
g[y].push_back(x);
}
LCA[1][0] = 1;
dfs(s,1);
init();
while(m --){
int a,b,c,d;
cin >> a >> b >> c >> d;
if(dist(a,b)+dist(c,d)>=dist(a,c)+dist(b,d))cout <<"Y\n";
else cout<<"N\n";
}
return 0;
}