/// pst+lca by muoii
/// www.spoj.com/problems/COT/
#include <bits/stdc++.h>
using namespace std;
#define tag "spoj"
#define maxn 100007
#define oo 1000000007
#define mid ((l+r)>>1)
#define meset(a,x) memset(a,x,sizeof(a))
#define loop(x) for(int LoOpEr=1;LoOpEr<=x;LoOpEr++)
///>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
struct pst{
int cnt;
pst *left,*right;
pst(): cnt(0), left(this), right(this) {};
pst(const int &c,pst *l,pst *r): cnt(c), left(l), right(r) {};
pst* insert(const int &l,const int &r,const int &add,const int &val = 1)
{
if(add<l || add>r) return this;
if(l==r) return new pst(cnt+val,0,0);
return new pst(cnt+val,left->insert(l,mid,add,val),right->insert(mid+1,r,add,val));
}
} *null=new pst();
struct nodeTree{
pst *root;
int anc[22];
int depth;
};
int n,m;
int maxa;
vector<int> a;
map<int,int> mark;
vector<int> realval;
vector<vector<int>> adj;
vector<nodeTree> infor;
#define root(u) infor[u].root
#define par(u) infor[u].anc[0]
#define ances(u,i) infor[u].anc[i]
#define depth(u) infor[u].depth
void data()
{
a.resize(n+1);
adj.resize(n+1);
realval.resize(n+1);
infor.resize(n+1);
root(0)=null;
}
void dfs(const int &u,const int &parent,const int &depth)
{
root(u)=root(parent)->insert(1,maxa,mark[a[u]]);
par(u)=parent;
depth(u)=depth(parent)+1;
for(int i=1;1<<i<n;i++) ances(u,i)=ances(ances(u,i-1),i-1);
for(const int &v: adj[u])
if(v!=parent)
dfs(v,u,depth+1);
}
int lca(int x,int y)
{
if(depth(x)<depth(y)) swap(x,y);
while(depth(x)>depth(y)) x=ances(x,(int)log2(depth(x)-depth(y)));
int lg=log2(depth(x));
while(x!=y)
{
while(lg>0 && ances(x,lg)==ances(y,lg)) --lg;
x=ances(x,lg),y=ances(y,lg);
}
return x;
}
int query(pst *u,pst *v,pst *par,pst *grand,const int &k,const int &l,const int &r)
{
if(l==r) return l;
int cnt=u->left->cnt + v->left->cnt - par->left->cnt - grand->left->cnt;
return (cnt>=k)?query(u->left,v->left,par->left,grand->left,k,l,mid):query(u->right,v->right,par->right,grand->right,k-cnt,mid+1,r);
}
int main()
{
#ifdef dmdd
freopen(tag".inp","r",stdin); freopen(tag".out","w",stdout);
#endif //dmdd
ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
cin>>n>>m;
data();
for(int i=1;i<=n;i++) cin>>a[i],mark[a[i]];
maxa=0;
for(auto &pii: mark) ++maxa,pii.second=maxa,realval[maxa]=pii.first;
int u,v,k,lcanc;;
loop(n-1) cin>>u>>v,adj[u].push_back(v),adj[v].push_back(u);
dfs(1,0,1);
loop(m) cin>>u>>v>>k,lcanc=lca(u,v),cout<<realval[query(root(u),root(v),root(lcanc),root(par(lcanc)),k,1,maxa)]<<"\n";
return 0;
}
Ly8vIHBzdCtsY2EgYnkgbXVvaWkKCi8vLyB3d3cuc3Bvai5jb20vcHJvYmxlbXMvQ09ULwoKI2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CiNkZWZpbmUgdGFnICJzcG9qIgojZGVmaW5lIG1heG4gMTAwMDA3CiNkZWZpbmUgb28gMTAwMDAwMDAwNwojZGVmaW5lIG1pZCAoKGwrcik+PjEpCiNkZWZpbmUgbWVzZXQoYSx4KSBtZW1zZXQoYSx4LHNpemVvZihhKSkKI2RlZmluZSBsb29wKHgpIGZvcihpbnQgTG9PcEVyPTE7TG9PcEVyPD14O0xvT3BFcisrKQovLy8+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+CnN0cnVjdCBwc3R7CiAgICBpbnQgY250OwogICAgcHN0ICpsZWZ0LCpyaWdodDsKCiAgICBwc3QoKTogY250KDApLCBsZWZ0KHRoaXMpLCByaWdodCh0aGlzKSB7fTsKCiAgICBwc3QoY29uc3QgaW50ICZjLHBzdCAqbCxwc3QgKnIpOiBjbnQoYyksIGxlZnQobCksIHJpZ2h0KHIpIHt9OwoKICAgIHBzdCogaW5zZXJ0KGNvbnN0IGludCAmbCxjb25zdCBpbnQgJnIsY29uc3QgaW50ICZhZGQsY29uc3QgaW50ICZ2YWwgPSAxKQogICAgewogICAgICAgIGlmKGFkZDxsIHx8IGFkZD5yKSByZXR1cm4gdGhpczsKCiAgICAgICAgaWYobD09cikgcmV0dXJuIG5ldyBwc3QoY250K3ZhbCwwLDApOwoKICAgICAgICByZXR1cm4gbmV3IHBzdChjbnQrdmFsLGxlZnQtPmluc2VydChsLG1pZCxhZGQsdmFsKSxyaWdodC0+aW5zZXJ0KG1pZCsxLHIsYWRkLHZhbCkpOwogICAgfQp9ICpudWxsPW5ldyBwc3QoKTsKc3RydWN0IG5vZGVUcmVlewogICAgcHN0ICpyb290OwogICAgaW50IGFuY1syMl07CiAgICBpbnQgZGVwdGg7Cn07CgppbnQgbixtOwppbnQgbWF4YTsKdmVjdG9yPGludD4gYTsKbWFwPGludCxpbnQ+IG1hcms7CnZlY3RvcjxpbnQ+IHJlYWx2YWw7CnZlY3Rvcjx2ZWN0b3I8aW50Pj4gYWRqOwp2ZWN0b3I8bm9kZVRyZWU+IGluZm9yOwojZGVmaW5lIHJvb3QodSkgaW5mb3JbdV0ucm9vdAojZGVmaW5lIHBhcih1KSBpbmZvclt1XS5hbmNbMF0KI2RlZmluZSBhbmNlcyh1LGkpIGluZm9yW3VdLmFuY1tpXQojZGVmaW5lIGRlcHRoKHUpIGluZm9yW3VdLmRlcHRoCgp2b2lkIGRhdGEoKQp7CiAgICBhLnJlc2l6ZShuKzEpOwogICAgYWRqLnJlc2l6ZShuKzEpOwogICAgcmVhbHZhbC5yZXNpemUobisxKTsKICAgIGluZm9yLnJlc2l6ZShuKzEpOwogICAgcm9vdCgwKT1udWxsOwp9Cgp2b2lkIGRmcyhjb25zdCBpbnQgJnUsY29uc3QgaW50ICZwYXJlbnQsY29uc3QgaW50ICZkZXB0aCkKewogICAgcm9vdCh1KT1yb290KHBhcmVudCktPmluc2VydCgxLG1heGEsbWFya1thW3VdXSk7CiAgICBwYXIodSk9cGFyZW50OwogICAgZGVwdGgodSk9ZGVwdGgocGFyZW50KSsxOwoKICAgIGZvcihpbnQgaT0xOzE8PGk8bjtpKyspIGFuY2VzKHUsaSk9YW5jZXMoYW5jZXModSxpLTEpLGktMSk7CgogICAgZm9yKGNvbnN0IGludCAmdjogYWRqW3VdKQogICAgICAgIGlmKHYhPXBhcmVudCkKICAgICAgICAgICAgZGZzKHYsdSxkZXB0aCsxKTsKfQoKaW50IGxjYShpbnQgeCxpbnQgeSkKewogICAgaWYoZGVwdGgoeCk8ZGVwdGgoeSkpIHN3YXAoeCx5KTsKCiAgICB3aGlsZShkZXB0aCh4KT5kZXB0aCh5KSkgeD1hbmNlcyh4LChpbnQpbG9nMihkZXB0aCh4KS1kZXB0aCh5KSkpOwoKICAgIGludCBsZz1sb2cyKGRlcHRoKHgpKTsKCiAgICB3aGlsZSh4IT15KQogICAgewogICAgICAgIHdoaWxlKGxnPjAgJiYgYW5jZXMoeCxsZyk9PWFuY2VzKHksbGcpKSAtLWxnOwogICAgICAgIHg9YW5jZXMoeCxsZykseT1hbmNlcyh5LGxnKTsKICAgIH0KCiAgICByZXR1cm4geDsKfQoKaW50IHF1ZXJ5KHBzdCAqdSxwc3QgKnYscHN0ICpwYXIscHN0ICpncmFuZCxjb25zdCBpbnQgJmssY29uc3QgaW50ICZsLGNvbnN0IGludCAmcikKewogICAgaWYobD09cikgcmV0dXJuIGw7CgogICAgaW50IGNudD11LT5sZWZ0LT5jbnQgKyB2LT5sZWZ0LT5jbnQgLSBwYXItPmxlZnQtPmNudCAtIGdyYW5kLT5sZWZ0LT5jbnQ7CgogICAgcmV0dXJuIChjbnQ+PWspP3F1ZXJ5KHUtPmxlZnQsdi0+bGVmdCxwYXItPmxlZnQsZ3JhbmQtPmxlZnQsayxsLG1pZCk6cXVlcnkodS0+cmlnaHQsdi0+cmlnaHQscGFyLT5yaWdodCxncmFuZC0+cmlnaHQsay1jbnQsbWlkKzEscik7Cn0KCmludCBtYWluKCkKewogICAgI2lmZGVmIGRtZGQKICAgIGZyZW9wZW4odGFnIi5pbnAiLCJyIixzdGRpbik7IGZyZW9wZW4odGFnIi5vdXQiLCJ3IixzdGRvdXQpOwogICAgI2VuZGlmIC8vZG1kZAogICAgaW9zX2Jhc2U6OnN5bmNfd2l0aF9zdGRpbygwKTsgY2luLnRpZSgwKTsgY291dC50aWUoMCk7CgogICAgY2luPj5uPj5tOwogICAgZGF0YSgpOwogICAgZm9yKGludCBpPTE7aTw9bjtpKyspIGNpbj4+YVtpXSxtYXJrW2FbaV1dOwoKICAgIG1heGE9MDsKICAgIGZvcihhdXRvICZwaWk6IG1hcmspICsrbWF4YSxwaWkuc2Vjb25kPW1heGEscmVhbHZhbFttYXhhXT1waWkuZmlyc3Q7CgogICAgaW50IHUsdixrLGxjYW5jOzsKCiAgICBsb29wKG4tMSkgY2luPj51Pj52LGFkalt1XS5wdXNoX2JhY2sodiksYWRqW3ZdLnB1c2hfYmFjayh1KTsKCiAgICBkZnMoMSwwLDEpOwoKICAgIGxvb3AobSkgY2luPj51Pj52Pj5rLGxjYW5jPWxjYSh1LHYpLGNvdXQ8PHJlYWx2YWxbcXVlcnkocm9vdCh1KSxyb290KHYpLHJvb3QobGNhbmMpLHJvb3QocGFyKGxjYW5jKSksaywxLG1heGEpXTw8IlxuIjsKCiAgICByZXR1cm4gMDsKfQo=