#include <unordered_set>
#include <unordered_map>
#include <bits/stdc++.h>
#define lli long long int
#define all(x) x.begin(),x.end()
#define b(x) x.begin()
#define e(x) x.end()
#define sz(x) x.size()
#define vi vector<int>
#define vli vector<long long int>
#define pi pair<int,int>
#define pli pair<long long int,long long int>
#define pr pair
#define ff first
#define ss second
#define vt vector
#define um unordered_map
#define us unordered_set
#define mod 1000000007
#define pb push_back
#define pf push_front
#define endl '\n'
#define loop(i,a,b) for(lli i=a;i<b;i++)
#define loopr(i,a,b) for(lli i=a;i>=b;i--)
#define foit(it,x) for(auto &it:x)
using namespace std;
int dx[] = {-1,1,0,0,-1,-1,1,1};
int dy[] = {0,0,1,-1,-1,1,-1,1};
const int block = 500;
static int timer = 0;
typedef struct
{
int l,r,id,c,type,LCA;
}query;
bool cmp(query a, query b)
{
if(a.l/block!=b.l/block)
return (a.l<b.l);
return (a.r<b.r);
}
void add(int node, int freq[], int colour[], int colourPresent[])
{
freq[node]++;
int col = colour[node];
if(freq[node]==1) colourPresent[col]=1;
if(freq[node]==2) colourPresent[col]=0;
}
void remove(int node, int freq[], int colour[], int colourPresent[])
{
freq[node]--;
int col = colour[node];
if(freq[node]==1) colourPresent[col]=1;
if(freq[node]==0) colourPresent[col] = 0;
}
void dfs(int node, int par, vi adj[], int in[], int out[], int ett[], int parent[][20], int level[])
{
parent[node][0]=par;
in[node]=timer;
ett[timer++]=node;
for(int &child:adj[node])
{
if(child!=par)
{
level[child]=level[node]+1;
dfs(child,node,adj,in,out,ett,parent,level);
}
}
out[node]=timer;
ett[timer++]=node;
}
int lca(int a, int b, int level[], int par[][20])
{
if(level[b]>level[a]) swap(a,b);
int d = level[a]-level[b];
for(int i=0;i<20;i++)
{
if(d&(1<<i)) a = par[a][i];
}
if(a==b) return a;
for(int i=19;i>=0;i--)
{
if((par[a][i]!=-1) && (par[a][i]!=par[b][i]))
{
a = par[a][i];
b = par[b][i];
}
}
return par[a][0];
}
void solve()
{
int t=1;
//cin>>t;
int n;
while(scanf("%d",&n)!=EOF)
{
int q; scanf("%d",&q);
int colour[n];
for(int i=0;i<n;i++) scanf("%d",&colour[i]);
vi adj[n];
for(int i=1;i<n;i++)
{
int a,b; scanf("%d %d",&a,&b); a--,b--;
adj[a].pb(b),adj[b].pb(a);
}
int in[n],out[n],ett[2*n], level[n];
memset(level,0,sizeof level);
int parent[n][20];
memset(parent,-1,sizeof parent);
timer = 0;
dfs(0,-1,adj,in,out,ett,parent,level);
for(int i=0;i<n;i++)
for(int j=1;j<20;j++)
{
if(parent[i][j-1]!=-1)
{
parent[i][j] = parent[parent[i][j-1]][j-1];
}
}
query Q[q];
for(int i=0;i<q;i++)
{
int a,b,c; scanf("%d %d %d",&a,&b,&c); a--,b--;
if(in[a]>in[b]) swap(a,b);
int LCA = lca(a,b,level,parent);
if(LCA==a) Q[i]={in[a],in[b],i,c,0,LCA};
else
Q[i]={out[a],in[b],i,c,1,LCA};
}
sort(Q,Q+q,cmp);
int freq[n],colourPresent[n+10],ans[q];
memset(freq,0,sizeof freq); memset(colourPresent,0, sizeof colourPresent);
int currL = 0, currR = -1;
for(int i=0;i<q;i++)
{
while(currL>Q[i].l)
currL--,add(ett[currL],freq,colour,colourPresent);
while(currR<Q[i].r)
currR++,add(ett[currR],freq,colour,colourPresent);
while(currL<Q[i].l)
remove(ett[currL],freq,colour,colourPresent),currL++;
while(currR>Q[i].r)
remove(ett[currR],freq,colour,colourPresent),currR--;
if(Q[i].type==1) colourPresent[colour[Q[i].LCA]] = 1;
ans[Q[i].id]=colourPresent[Q[i].c];
if(Q[i].type==1) colourPresent[colour[Q[i].LCA]] = 0;
}
for(int i=0;i<q;i++)
{
if(ans[i]) printf("%s\n","Find");
else printf("%s\n","NotFind");
}
printf("%s"," ");
}
}
int main()
{
clock_t start, end;
start = clock();
ios_base::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
// #ifndef ONLINE_JUDGE
// freopen("input.txt","r",stdin);
// freopen("output.txt","w",stdout);
// #endif
solve();
end = clock();
#ifndef ONLINE_JUDGE
double time_taken = double(end - start) / double(CLOCKS_PER_SEC);
cout << "Time taken is : " << fixed
<< time_taken << setprecision(5);
cout << " sec " << endl;
#endif
return 0;
}
I2luY2x1ZGUgPHVub3JkZXJlZF9zZXQ+CiNpbmNsdWRlIDx1bm9yZGVyZWRfbWFwPgojaW5jbHVkZSA8Yml0cy9zdGRjKysuaD4KCgojZGVmaW5lIGxsaSBsb25nIGxvbmcgaW50CiNkZWZpbmUgYWxsKHgpIHguYmVnaW4oKSx4LmVuZCgpCiNkZWZpbmUgYih4KSB4LmJlZ2luKCkKI2RlZmluZSBlKHgpIHguZW5kKCkKI2RlZmluZSBzeih4KSB4LnNpemUoKQojZGVmaW5lIHZpIHZlY3RvcjxpbnQ+CiNkZWZpbmUgdmxpIHZlY3Rvcjxsb25nIGxvbmcgaW50PgojZGVmaW5lIHBpIHBhaXI8aW50LGludD4KI2RlZmluZSBwbGkgcGFpcjxsb25nIGxvbmcgaW50LGxvbmcgbG9uZyBpbnQ+CiNkZWZpbmUgcHIgcGFpcgojZGVmaW5lIGZmIGZpcnN0CiNkZWZpbmUgc3Mgc2Vjb25kCiNkZWZpbmUgdnQgdmVjdG9yCiNkZWZpbmUgdW0gdW5vcmRlcmVkX21hcAojZGVmaW5lIHVzIHVub3JkZXJlZF9zZXQKI2RlZmluZSBtb2QgMTAwMDAwMDAwNwojZGVmaW5lIHBiIHB1c2hfYmFjawojZGVmaW5lIHBmIHB1c2hfZnJvbnQKI2RlZmluZSBlbmRsICdcbicKI2RlZmluZSBsb29wKGksYSxiKSBmb3IobGxpIGk9YTtpPGI7aSsrKQojZGVmaW5lIGxvb3ByKGksYSxiKSBmb3IobGxpIGk9YTtpPj1iO2ktLSkKI2RlZmluZSBmb2l0KGl0LHgpICAgZm9yKGF1dG8gJml0OngpCgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKaW50IGR4W10gPSB7LTEsMSwwLDAsLTEsLTEsMSwxfTsKaW50IGR5W10gPSB7MCwwLDEsLTEsLTEsMSwtMSwxfTsKCmNvbnN0IGludCBibG9jayA9IDUwMDsKc3RhdGljIGludCB0aW1lciA9IDA7Cgp0eXBlZGVmIHN0cnVjdAp7CiAgICBpbnQgbCxyLGlkLGMsdHlwZSxMQ0E7Cn1xdWVyeTsKCmJvb2wgY21wKHF1ZXJ5IGEsIHF1ZXJ5IGIpCnsKICAgIGlmKGEubC9ibG9jayE9Yi5sL2Jsb2NrKQogICAgcmV0dXJuIChhLmw8Yi5sKTsKICAgIHJldHVybiAoYS5yPGIucik7Cn0KCgp2b2lkIGFkZChpbnQgbm9kZSwgaW50IGZyZXFbXSwgaW50IGNvbG91cltdLCBpbnQgY29sb3VyUHJlc2VudFtdKQp7CiAgICBmcmVxW25vZGVdKys7CiAgICBpbnQgY29sID0gY29sb3VyW25vZGVdOwogICAgaWYoZnJlcVtub2RlXT09MSkgY29sb3VyUHJlc2VudFtjb2xdPTE7CiAgICBpZihmcmVxW25vZGVdPT0yKSBjb2xvdXJQcmVzZW50W2NvbF09MDsKfQoKdm9pZCByZW1vdmUoaW50IG5vZGUsIGludCBmcmVxW10sIGludCBjb2xvdXJbXSwgaW50IGNvbG91clByZXNlbnRbXSkKewogICAgZnJlcVtub2RlXS0tOwogICAgaW50IGNvbCA9IGNvbG91cltub2RlXTsKICAgIGlmKGZyZXFbbm9kZV09PTEpIGNvbG91clByZXNlbnRbY29sXT0xOwogICAgaWYoZnJlcVtub2RlXT09MCkgY29sb3VyUHJlc2VudFtjb2xdID0gMDsKfQoKdm9pZCBkZnMoaW50IG5vZGUsIGludCBwYXIsIHZpIGFkaltdLCBpbnQgaW5bXSwgaW50IG91dFtdLCBpbnQgZXR0W10sIGludCBwYXJlbnRbXVsyMF0sIGludCBsZXZlbFtdKQp7CiAgICBwYXJlbnRbbm9kZV1bMF09cGFyOwogICAgaW5bbm9kZV09dGltZXI7CiAgICBldHRbdGltZXIrK109bm9kZTsKICAgIGZvcihpbnQgJmNoaWxkOmFkaltub2RlXSkKICAgIHsKICAgICAgICBpZihjaGlsZCE9cGFyKQogICAgICAgIHsKICAgICAgICAgICAgbGV2ZWxbY2hpbGRdPWxldmVsW25vZGVdKzE7CiAgICAgICAgICAgIGRmcyhjaGlsZCxub2RlLGFkaixpbixvdXQsZXR0LHBhcmVudCxsZXZlbCk7CiAgICAgICAgfQogICAgfQogICAgb3V0W25vZGVdPXRpbWVyOwogICAgZXR0W3RpbWVyKytdPW5vZGU7Cn0KCmludCBsY2EoaW50IGEsIGludCBiLCBpbnQgbGV2ZWxbXSwgaW50IHBhcltdWzIwXSkKewogICAgaWYobGV2ZWxbYl0+bGV2ZWxbYV0pIHN3YXAoYSxiKTsKICAgIGludCBkID0gbGV2ZWxbYV0tbGV2ZWxbYl07CiAgICBmb3IoaW50IGk9MDtpPDIwO2krKykKICAgIHsKICAgICAgICBpZihkJigxPDxpKSkgYSA9IHBhclthXVtpXTsKICAgIH0KCiAgICBpZihhPT1iKSByZXR1cm4gYTsKICAgIGZvcihpbnQgaT0xOTtpPj0wO2ktLSkKICAgIHsKICAgICAgICBpZigocGFyW2FdW2ldIT0tMSkgJiYgKHBhclthXVtpXSE9cGFyW2JdW2ldKSkKICAgICAgICB7CiAgICAgICAgICAgIGEgPSBwYXJbYV1baV07CiAgICAgICAgICAgIGIgPSBwYXJbYl1baV07CiAgICAgICAgfQogICAgfQogICAgcmV0dXJuIHBhclthXVswXTsKfQoKdm9pZCBzb2x2ZSgpCnsKICAgIGludCB0PTE7CiAgICAvL2Npbj4+dDsKICAgIGludCBuOwogICAgd2hpbGUoc2NhbmYoIiVkIiwmbikhPUVPRikKICAgIHsKICAgICAgICBpbnQgcTsgc2NhbmYoIiVkIiwmcSk7CiAgICAgICAgaW50IGNvbG91cltuXTsKICAgICAgICBmb3IoaW50IGk9MDtpPG47aSsrKSBzY2FuZigiJWQiLCZjb2xvdXJbaV0pOwogICAgICAgIHZpIGFkaltuXTsKICAgICAgICBmb3IoaW50IGk9MTtpPG47aSsrKQogICAgICAgIHsKICAgICAgICAgICAgaW50IGEsYjsgc2NhbmYoIiVkICVkIiwmYSwmYik7IGEtLSxiLS07CiAgICAgICAgICAgIGFkalthXS5wYihiKSxhZGpbYl0ucGIoYSk7CiAgICAgICAgfQogICAgICAgIGludCBpbltuXSxvdXRbbl0sZXR0WzIqbl0sIGxldmVsW25dOwogICAgICAgIG1lbXNldChsZXZlbCwwLHNpemVvZiBsZXZlbCk7CiAgICAgICAgaW50IHBhcmVudFtuXVsyMF07CiAgICAgICAgbWVtc2V0KHBhcmVudCwtMSxzaXplb2YgcGFyZW50KTsKICAgICAgICB0aW1lciA9IDA7CiAgICAgICAgZGZzKDAsLTEsYWRqLGluLG91dCxldHQscGFyZW50LGxldmVsKTsKCiAgICAgICAgZm9yKGludCBpPTA7aTxuO2krKykKICAgICAgICBmb3IoaW50IGo9MTtqPDIwO2orKykKICAgICAgICB7CiAgICAgICAgICAgIGlmKHBhcmVudFtpXVtqLTFdIT0tMSkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgcGFyZW50W2ldW2pdID0gcGFyZW50W3BhcmVudFtpXVtqLTFdXVtqLTFdOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHF1ZXJ5IFFbcV07CiAgICAgICAgZm9yKGludCBpPTA7aTxxO2krKykKICAgICAgICB7CiAgICAgICAgICAgIGludCBhLGIsYzsgc2NhbmYoIiVkICVkICVkIiwmYSwmYiwmYyk7IGEtLSxiLS07CiAgICAgICAgICAgIGlmKGluW2FdPmluW2JdKSBzd2FwKGEsYik7CiAgICAgICAgICAgIGludCBMQ0EgPSBsY2EoYSxiLGxldmVsLHBhcmVudCk7CiAgICAgICAgICAgIGlmKExDQT09YSkgUVtpXT17aW5bYV0saW5bYl0saSxjLDAsTENBfTsKICAgICAgICAgICAgZWxzZQogICAgICAgICAgICBRW2ldPXtvdXRbYV0saW5bYl0saSxjLDEsTENBfTsKICAgICAgICB9CiAgICAgICAgc29ydChRLFErcSxjbXApOwogICAgICAgIGludCBmcmVxW25dLGNvbG91clByZXNlbnRbbisxMF0sYW5zW3FdOwogICAgICAgIG1lbXNldChmcmVxLDAsc2l6ZW9mIGZyZXEpOyBtZW1zZXQoY29sb3VyUHJlc2VudCwwLCBzaXplb2YgY29sb3VyUHJlc2VudCk7CiAgICAgICAgaW50IGN1cnJMID0gMCwgY3VyclIgPSAtMTsKICAgICAgICBmb3IoaW50IGk9MDtpPHE7aSsrKQogICAgICAgIHsKICAgICAgICAgICAgd2hpbGUoY3Vyckw+UVtpXS5sKQogICAgICAgICAgICBjdXJyTC0tLGFkZChldHRbY3VyckxdLGZyZXEsY29sb3VyLGNvbG91clByZXNlbnQpOwoKICAgICAgICAgICAgd2hpbGUoY3VyclI8UVtpXS5yKQogICAgICAgICAgICBjdXJyUisrLGFkZChldHRbY3VyclJdLGZyZXEsY29sb3VyLGNvbG91clByZXNlbnQpOwoKICAgICAgICAgICAgd2hpbGUoY3Vyckw8UVtpXS5sKQogICAgICAgICAgICByZW1vdmUoZXR0W2N1cnJMXSxmcmVxLGNvbG91cixjb2xvdXJQcmVzZW50KSxjdXJyTCsrOwoKICAgICAgICAgICAgd2hpbGUoY3VyclI+UVtpXS5yKQogICAgICAgICAgICByZW1vdmUoZXR0W2N1cnJSXSxmcmVxLGNvbG91cixjb2xvdXJQcmVzZW50KSxjdXJyUi0tOwoKICAgICAgICAgICAgaWYoUVtpXS50eXBlPT0xKSBjb2xvdXJQcmVzZW50W2NvbG91cltRW2ldLkxDQV1dID0gMTsKICAgICAgICAgICAgYW5zW1FbaV0uaWRdPWNvbG91clByZXNlbnRbUVtpXS5jXTsKICAgICAgICAgICAgaWYoUVtpXS50eXBlPT0xKSBjb2xvdXJQcmVzZW50W2NvbG91cltRW2ldLkxDQV1dID0gMDsKICAgICAgICB9CiAgICAgICAgZm9yKGludCBpPTA7aTxxO2krKykKICAgICAgICB7CiAgICAgICAgICAgIGlmKGFuc1tpXSkgcHJpbnRmKCIlc1xuIiwiRmluZCIpOwogICAgICAgICAgICBlbHNlIHByaW50ZigiJXNcbiIsIk5vdEZpbmQiKTsKICAgICAgICB9CiAgICAgICAgcHJpbnRmKCIlcyIsIiAiKTsKICAgIH0KfQoKCmludCBtYWluKCkKewogICAgY2xvY2tfdCBzdGFydCwgZW5kOwogICAgc3RhcnQgPSBjbG9jaygpOwogICAgaW9zX2Jhc2U6OnN5bmNfd2l0aF9zdGRpbyhmYWxzZSk7CiAgICBjaW4udGllKE5VTEwpOwogICAgY291dC50aWUoTlVMTCk7CiAgICAvLyAjaWZuZGVmIE9OTElORV9KVURHRQogICAgLy8gZnJlb3BlbigiaW5wdXQudHh0IiwiciIsc3RkaW4pOwogICAgLy8gZnJlb3Blbigib3V0cHV0LnR4dCIsInciLHN0ZG91dCk7CiAgICAvLyAjZW5kaWYKICAgIHNvbHZlKCk7CiAgICBlbmQgPSBjbG9jaygpOwogICAgI2lmbmRlZiBPTkxJTkVfSlVER0UKICAgIGRvdWJsZSB0aW1lX3Rha2VuID0gZG91YmxlKGVuZCAtIHN0YXJ0KSAvIGRvdWJsZShDTE9DS1NfUEVSX1NFQyk7CiAgICBjb3V0IDw8ICJUaW1lIHRha2VuIGlzIDogIiA8PCBmaXhlZAogICAgICAgICA8PCB0aW1lX3Rha2VuIDw8IHNldHByZWNpc2lvbig1KTsKICAgIGNvdXQgPDwgIiBzZWMgIiA8PCBlbmRsOwogICAgI2VuZGlmCiAgICByZXR1cm4gMDsKfQo=