/* AUTHOR: TUAN ANH - BUI */
// ~~ icebear ~~
#include <bits/stdc++.h>
using namespace std;
#define int long long
typedef long long ll;
typedef pair<int, int> ii;
typedef pair<int, ii> iii;
template<class X, class Y>
bool minimize(X &x, const Y &y) {
if (x > y) return x = y, true;
return false;
}
template<class X, class Y>
bool maximize(X &x, const Y &y) {
if (x < y) return x = y, true;
return false;
}
#define FOR(i,a,b) for(int i=(a); i<=(b); ++i)
#define FORR(i,a,b) for(int i=(a); i>=(b); --i)
#define REP(i, n) for(int i=0; i<(n); ++i)
#define RED(i, n) for(int i=(n)-1; i>=0; --i)
#define MASK(i) (1LL << (i))
#define BIT(S, i) (((S) >> (i)) & 1)
#define mp make_pair
#define pb push_back
#define fi first
#define se second
#define all(x) x.begin(), x.end()
#define task "icebear"
/*END OF TEMPLATE. ICEBEAR AND THE CAT WILL WIN VOI26 */
const int MOD = 1e9 + 7;
const int inf = (int)1e9 + 27092008;
const ll INF = (ll)1e18 + 27092008;
const int N = 2e5 + 5;
int n, a[N];
vector<int> G[N], compress, nodes[N];
int ans[N], ft[N], tin[N], tout[N], timer, P[N][20], h[N];
vector<array<int, 3>> Q[N];
void update(int x, int val) {
for(; x <= n; x += x & -x) ft[x] += val;
}
int get(int x) {
int ans = 0;
for(; x; x -= x & -x) ans += ft[x];
return ans;
}
void dfs(int u, int par) {
P[u][0] = par;
FOR(j, 1, 19) P[u][j] = P[P[u][j - 1]][j - 1];
tin[u] = ++timer;
for(int v : G[u]) if (v != par) {
h[v] = h[u] + 1;
dfs(v, u);
}
tout[u] = timer;
}
int LCA(int u, int v) {
if (h[u] < h[v]) swap(u, v);
int s = h[u] - h[v];
RED(j, 20) if (BIT(s, j))
u = P[u][j];
if (u == v) return u;
RED(j, 20) if (P[u][j] != P[v][j]) {
u = P[u][j];
v = P[v][j];
}
return P[u][0];
}
int q;
void init(void) {
cin >> n >> q;
FOR(i, 1, n) cin >> a[i], compress.pb(a[i]);
FOR(i, 2, n) {
int u, v;
cin >> u >> v;
G[u].pb(v);
G[v].pb(u);
}
sort(all(compress));
compress.resize(unique(all(compress)) - compress.begin());
FOR(i, 1, n) a[i] = upper_bound(all(compress), a[i]) - compress.begin();
FOR(i, 1, q) {
int x, y, z;
cin >> x >> y >> z;
int p = upper_bound(all(compress), z) - compress.begin();
if (p == 0 || compress[p - 1] != z) continue;
Q[p].pb({x, y, i});
}
FOR(i, 1, n) nodes[a[i]].pb(i);
}
void process(void) {
dfs(1, 0);
FOR(i, 1, n) {
for(int &x : nodes[i]) update(tin[x], +1), update(tout[x] + 1, -1);
for(auto &x : Q[i]) {
ans[x[2]] = get(tin[x[1]]) + get(tin[x[0]]) - 2 * get(tin[LCA(x[0], x[1])]) + (a[LCA(x[0], x[1])] == i);
}
for(int &x : nodes[i]) update(tin[x], -1), update(tout[x] + 1, +1);
}
FOR(i, 1, q) cout << (ans[i] > 0);
}
signed main() {
ios_base::sync_with_stdio(0);
cin.tie(0); cout.tie(0);
if (fopen(task".inp", "r")) {
freopen(task".inp", "r", stdin);
freopen(task".out", "w", stdout);
}
int tc = 1;
// cin >> tc;
while(tc--) {
init();
process();
}
return 0;
}
LyogQVVUSE9SOiBUVUFOIEFOSCAtIEJVSSAqLwovLyB+fiBpY2ViZWFyIH5+CiNpbmNsdWRlIDxiaXRzL3N0ZGMrKy5oPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwojZGVmaW5lIGludCBsb25nIGxvbmcKdHlwZWRlZiBsb25nIGxvbmcgbGw7CnR5cGVkZWYgcGFpcjxpbnQsIGludD4gaWk7CnR5cGVkZWYgcGFpcjxpbnQsIGlpPiBpaWk7Cgp0ZW1wbGF0ZTxjbGFzcyBYLCBjbGFzcyBZPgogICAgYm9vbCBtaW5pbWl6ZShYICZ4LCBjb25zdCBZICZ5KSB7CiAgICAgICAgaWYgKHggPiB5KSByZXR1cm4geCA9IHksIHRydWU7CiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQoKdGVtcGxhdGU8Y2xhc3MgWCwgY2xhc3MgWT4KICAgIGJvb2wgbWF4aW1pemUoWCAmeCwgY29uc3QgWSAmeSkgewogICAgICAgIGlmICh4IDwgeSkgcmV0dXJuIHggPSB5LCB0cnVlOwogICAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KCiNkZWZpbmUgRk9SKGksYSxiKSBmb3IoaW50IGk9KGEpOyBpPD0oYik7ICsraSkKI2RlZmluZSBGT1JSKGksYSxiKSBmb3IoaW50IGk9KGEpOyBpPj0oYik7IC0taSkKI2RlZmluZSBSRVAoaSwgbikgZm9yKGludCBpPTA7IGk8KG4pOyArK2kpCiNkZWZpbmUgUkVEKGksIG4pIGZvcihpbnQgaT0obiktMTsgaT49MDsgLS1pKQojZGVmaW5lIE1BU0soaSkgKDFMTCA8PCAoaSkpCiNkZWZpbmUgQklUKFMsIGkpICgoKFMpID4+IChpKSkgJiAxKQojZGVmaW5lIG1wIG1ha2VfcGFpcgojZGVmaW5lIHBiIHB1c2hfYmFjawojZGVmaW5lIGZpIGZpcnN0CiNkZWZpbmUgc2Ugc2Vjb25kCiNkZWZpbmUgYWxsKHgpIHguYmVnaW4oKSwgeC5lbmQoKQojZGVmaW5lIHRhc2sgImljZWJlYXIiCi8qRU5EIE9GIFRFTVBMQVRFLiBJQ0VCRUFSIEFORCBUSEUgQ0FUIFdJTEwgV0lOIFZPSTI2ICovCgpjb25zdCBpbnQgTU9EID0gMWU5ICsgNzsKY29uc3QgaW50IGluZiA9IChpbnQpMWU5ICsgMjcwOTIwMDg7CmNvbnN0IGxsIElORiAgPSAobGwpMWUxOCArIDI3MDkyMDA4Owpjb25zdCBpbnQgTiA9IDJlNSArIDU7CmludCBuLCBhW05dOwp2ZWN0b3I8aW50PiBHW05dLCBjb21wcmVzcywgbm9kZXNbTl07CmludCBhbnNbTl0sIGZ0W05dLCB0aW5bTl0sIHRvdXRbTl0sIHRpbWVyLCBQW05dWzIwXSwgaFtOXTsKdmVjdG9yPGFycmF5PGludCwgMz4+IFFbTl07Cgp2b2lkIHVwZGF0ZShpbnQgeCwgaW50IHZhbCkgewogICAgZm9yKDsgeCA8PSBuOyB4ICs9IHggJiAteCkgZnRbeF0gKz0gdmFsOwp9CgppbnQgZ2V0KGludCB4KSB7CiAgICBpbnQgYW5zID0gMDsKICAgIGZvcig7IHg7IHggLT0geCAmIC14KSBhbnMgKz0gZnRbeF07CiAgICByZXR1cm4gYW5zOwp9Cgp2b2lkIGRmcyhpbnQgdSwgaW50IHBhcikgewogICAgUFt1XVswXSA9IHBhcjsKICAgIEZPUihqLCAxLCAxOSkgUFt1XVtqXSA9IFBbUFt1XVtqIC0gMV1dW2ogLSAxXTsKICAgIHRpblt1XSA9ICsrdGltZXI7CiAgICBmb3IoaW50IHYgOiBHW3VdKSBpZiAodiAhPSBwYXIpIHsKICAgICAgICBoW3ZdID0gaFt1XSArIDE7CiAgICAgICAgZGZzKHYsIHUpOwogICAgfQogICAgdG91dFt1XSA9IHRpbWVyOwp9CgppbnQgTENBKGludCB1LCBpbnQgdikgewogICAgaWYgKGhbdV0gPCBoW3ZdKSBzd2FwKHUsIHYpOwogICAgaW50IHMgPSBoW3VdIC0gaFt2XTsKICAgIFJFRChqLCAyMCkgaWYgKEJJVChzLCBqKSkKICAgICAgICB1ID0gUFt1XVtqXTsKICAgIGlmICh1ID09IHYpIHJldHVybiB1OwogICAgUkVEKGosIDIwKSBpZiAoUFt1XVtqXSAhPSBQW3ZdW2pdKSB7CiAgICAgICAgdSA9IFBbdV1bal07CiAgICAgICAgdiA9IFBbdl1bal07CiAgICB9CiAgICByZXR1cm4gUFt1XVswXTsKfQoKaW50IHE7CnZvaWQgaW5pdCh2b2lkKSB7CiAgICBjaW4gPj4gbiA+PiBxOwogICAgRk9SKGksIDEsIG4pIGNpbiA+PiBhW2ldLCBjb21wcmVzcy5wYihhW2ldKTsKICAgIEZPUihpLCAyLCBuKSB7CiAgICAgICAgaW50IHUsIHY7CiAgICAgICAgY2luID4+IHUgPj4gdjsKICAgICAgICBHW3VdLnBiKHYpOwogICAgICAgIEdbdl0ucGIodSk7CiAgICB9CiAgICBzb3J0KGFsbChjb21wcmVzcykpOwogICAgY29tcHJlc3MucmVzaXplKHVuaXF1ZShhbGwoY29tcHJlc3MpKSAtIGNvbXByZXNzLmJlZ2luKCkpOwogICAgRk9SKGksIDEsIG4pIGFbaV0gPSB1cHBlcl9ib3VuZChhbGwoY29tcHJlc3MpLCBhW2ldKSAtIGNvbXByZXNzLmJlZ2luKCk7CiAgICBGT1IoaSwgMSwgcSkgewogICAgICAgIGludCB4LCB5LCB6OwogICAgICAgIGNpbiA+PiB4ID4+IHkgPj4gejsKICAgICAgICBpbnQgcCA9IHVwcGVyX2JvdW5kKGFsbChjb21wcmVzcyksIHopIC0gY29tcHJlc3MuYmVnaW4oKTsKICAgICAgICBpZiAocCA9PSAwIHx8IGNvbXByZXNzW3AgLSAxXSAhPSB6KSBjb250aW51ZTsKICAgICAgICBRW3BdLnBiKHt4LCB5LCBpfSk7CiAgICB9CgogICAgRk9SKGksIDEsIG4pIG5vZGVzW2FbaV1dLnBiKGkpOwp9Cgp2b2lkIHByb2Nlc3Modm9pZCkgewogICAgZGZzKDEsIDApOwogICAgRk9SKGksIDEsIG4pIHsKICAgICAgICBmb3IoaW50ICZ4IDogbm9kZXNbaV0pIHVwZGF0ZSh0aW5beF0sICsxKSwgdXBkYXRlKHRvdXRbeF0gKyAxLCAtMSk7CiAgICAgICAgZm9yKGF1dG8gJnggOiBRW2ldKSB7CiAgICAgICAgICAgIGFuc1t4WzJdXSA9IGdldCh0aW5beFsxXV0pICsgZ2V0KHRpblt4WzBdXSkgLSAyICogZ2V0KHRpbltMQ0EoeFswXSwgeFsxXSldKSArIChhW0xDQSh4WzBdLCB4WzFdKV0gPT0gaSk7CiAgICAgICAgfQogICAgICAgIGZvcihpbnQgJnggOiBub2Rlc1tpXSkgdXBkYXRlKHRpblt4XSwgLTEpLCB1cGRhdGUodG91dFt4XSArIDEsICsxKTsKICAgIH0KICAgIEZPUihpLCAxLCBxKSBjb3V0IDw8IChhbnNbaV0gPiAwKTsKfQoKc2lnbmVkIG1haW4oKSB7CiAgICBpb3NfYmFzZTo6c3luY193aXRoX3N0ZGlvKDApOwogICAgY2luLnRpZSgwKTsgY291dC50aWUoMCk7CiAgICBpZiAoZm9wZW4odGFzayIuaW5wIiwgInIiKSkgewogICAgICAgIGZyZW9wZW4odGFzayIuaW5wIiwgInIiLCBzdGRpbik7CiAgICAgICAgZnJlb3Blbih0YXNrIi5vdXQiLCAidyIsIHN0ZG91dCk7CiAgICB9CiAgICBpbnQgdGMgPSAxOwovLyAgICBjaW4gPj4gdGM7CiAgICB3aGlsZSh0Yy0tKSB7CiAgICAgICAgaW5pdCgpOwogICAgICAgIHByb2Nlc3MoKTsKICAgIH0KICAgIHJldHVybiAwOwp9Cg==