#include <bits/stdc++.h>
using namespace std;
#define int long long
const int N = 100005;
vector<int> g[N];
int color[N];
int sz[N];
int heavy[N];
bool big[N];
vector<pair<int,int>> query[N];
int ans[N];
int cntColor[N];
struct BIT
{
int bit[N];
void add(int idx, int val)
{
while(idx < N)
{
bit[idx] += val;
idx += idx & -idx;
}
}
int sum(int idx)
{
int s = 0;
while(idx > 0)
{
s += bit[idx];
idx -= idx & -idx;
}
return s;
}
int range(int l, int r)
{
return sum(r) - sum(l-1);
}
} fw;
void getsz(int u, int p)
{
sz[u] = 1;
heavy[u] = -1;
int mx = 0;
for(int v : g[u])
{
if(v == p) continue;
getsz(v, u);
sz[u] += sz[v];
if(sz[v] > mx)
{
mx = sz[v];
heavy[u] = v;
}
}
}
void add(int u, int p, int val)
{
int c = color[u];
int old = cntColor[c];
if(old)
fw.add(old, -1);
cntColor[c] += val;
int now = cntColor[c];
if(now)
fw.add(now, +1);
for(int v : g[u])
{
if(v == p || big[v]) continue;
add(v, u, val);
}
}
void dfs(int u, int p, bool keep)
{
for(int v : g[u])
{
if(v == p || v == heavy[u]) continue;
dfs(v, u, 0);
}
if(heavy[u] != -1)
{
dfs(heavy[u], u, 1);
big[heavy[u]] = 1;
}
add(u, p, +1);
for(auto [x, id] : query[u])
{
ans[id] = fw.range(x, N-1);
}
if(heavy[u] != -1)
big[heavy[u]] = 0;
if(!keep)
{
add(u, p, -1);
}
}
signed main()
{
ios::sync_with_stdio(false);
cin.tie(nullptr);
int n, q;
cin >> n >> q;
for(int i = 1; i <= n; i++)
cin >> color[i];
for(int i = 1; i < n; i++)
{
int u, v;
cin >> u >> v;
g[u].push_back(v);
g[v].push_back(u);
}
for(int i = 1; i <= q; i++)
{
int u, x;
cin >> u >> x;
query[u].push_back({x, i});
}
getsz(1, 0);
dfs(1, 0, 1);
for(int i = 1; i <= q; i++)
{
cout << ans[i] << '\n';
}
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgojZGVmaW5lIGludCBsb25nIGxvbmcKCmNvbnN0IGludCBOID0gMTAwMDA1OwoKdmVjdG9yPGludD4gZ1tOXTsKCmludCBjb2xvcltOXTsKCmludCBzeltOXTsKaW50IGhlYXZ5W05dOwoKYm9vbCBiaWdbTl07Cgp2ZWN0b3I8cGFpcjxpbnQsaW50Pj4gcXVlcnlbTl07CgppbnQgYW5zW05dOwoKaW50IGNudENvbG9yW05dOwoKc3RydWN0IEJJVAp7CiAgICBpbnQgYml0W05dOwoKICAgIHZvaWQgYWRkKGludCBpZHgsIGludCB2YWwpCiAgICB7CiAgICAgICAgd2hpbGUoaWR4IDwgTikKICAgICAgICB7CiAgICAgICAgICAgIGJpdFtpZHhdICs9IHZhbDsKICAgICAgICAgICAgaWR4ICs9IGlkeCAmIC1pZHg7CiAgICAgICAgfQogICAgfQoKICAgIGludCBzdW0oaW50IGlkeCkKICAgIHsKICAgICAgICBpbnQgcyA9IDA7CgogICAgICAgIHdoaWxlKGlkeCA+IDApCiAgICAgICAgewogICAgICAgICAgICBzICs9IGJpdFtpZHhdOwogICAgICAgICAgICBpZHggLT0gaWR4ICYgLWlkeDsKICAgICAgICB9CgogICAgICAgIHJldHVybiBzOwogICAgfQoKICAgIGludCByYW5nZShpbnQgbCwgaW50IHIpCiAgICB7CiAgICAgICAgcmV0dXJuIHN1bShyKSAtIHN1bShsLTEpOwogICAgfQoKfSBmdzsKCnZvaWQgZ2V0c3ooaW50IHUsIGludCBwKQp7CiAgICBzelt1XSA9IDE7CgogICAgaGVhdnlbdV0gPSAtMTsKCiAgICBpbnQgbXggPSAwOwoKICAgIGZvcihpbnQgdiA6IGdbdV0pCiAgICB7CiAgICAgICAgaWYodiA9PSBwKSBjb250aW51ZTsKCiAgICAgICAgZ2V0c3oodiwgdSk7CgogICAgICAgIHN6W3VdICs9IHN6W3ZdOwoKICAgICAgICBpZihzelt2XSA+IG14KQogICAgICAgIHsKICAgICAgICAgICAgbXggPSBzelt2XTsKICAgICAgICAgICAgaGVhdnlbdV0gPSB2OwogICAgICAgIH0KICAgIH0KfQoKdm9pZCBhZGQoaW50IHUsIGludCBwLCBpbnQgdmFsKQp7CiAgICBpbnQgYyA9IGNvbG9yW3VdOwoKICAgIGludCBvbGQgPSBjbnRDb2xvcltjXTsKCiAgICBpZihvbGQpCiAgICAgICAgZncuYWRkKG9sZCwgLTEpOwoKICAgIGNudENvbG9yW2NdICs9IHZhbDsKCiAgICBpbnQgbm93ID0gY250Q29sb3JbY107CgogICAgaWYobm93KQogICAgICAgIGZ3LmFkZChub3csICsxKTsKCiAgICBmb3IoaW50IHYgOiBnW3VdKQogICAgewogICAgICAgIGlmKHYgPT0gcCB8fCBiaWdbdl0pIGNvbnRpbnVlOwoKICAgICAgICBhZGQodiwgdSwgdmFsKTsKICAgIH0KfQoKdm9pZCBkZnMoaW50IHUsIGludCBwLCBib29sIGtlZXApCnsKICAgIGZvcihpbnQgdiA6IGdbdV0pCiAgICB7CiAgICAgICAgaWYodiA9PSBwIHx8IHYgPT0gaGVhdnlbdV0pIGNvbnRpbnVlOwoKICAgICAgICBkZnModiwgdSwgMCk7CiAgICB9CgogICAgaWYoaGVhdnlbdV0gIT0gLTEpCiAgICB7CiAgICAgICAgZGZzKGhlYXZ5W3VdLCB1LCAxKTsKCiAgICAgICAgYmlnW2hlYXZ5W3VdXSA9IDE7CiAgICB9CgogICAgYWRkKHUsIHAsICsxKTsKCiAgICBmb3IoYXV0byBbeCwgaWRdIDogcXVlcnlbdV0pCiAgICB7CiAgICAgICAgYW5zW2lkXSA9IGZ3LnJhbmdlKHgsIE4tMSk7CiAgICB9CgogICAgaWYoaGVhdnlbdV0gIT0gLTEpCiAgICAgICAgYmlnW2hlYXZ5W3VdXSA9IDA7CgogICAgaWYoIWtlZXApCiAgICB7CiAgICAgICAgYWRkKHUsIHAsIC0xKTsKICAgIH0KfQoKc2lnbmVkIG1haW4oKQp7CiAgICBpb3M6OnN5bmNfd2l0aF9zdGRpbyhmYWxzZSk7CiAgICBjaW4udGllKG51bGxwdHIpOwoKICAgIGludCBuLCBxOwoKICAgIGNpbiA+PiBuID4+IHE7CgogICAgZm9yKGludCBpID0gMTsgaSA8PSBuOyBpKyspCiAgICAgICAgY2luID4+IGNvbG9yW2ldOwoKICAgIGZvcihpbnQgaSA9IDE7IGkgPCBuOyBpKyspCiAgICB7CiAgICAgICAgaW50IHUsIHY7CgogICAgICAgIGNpbiA+PiB1ID4+IHY7CgogICAgICAgIGdbdV0ucHVzaF9iYWNrKHYpOwogICAgICAgIGdbdl0ucHVzaF9iYWNrKHUpOwogICAgfQoKICAgIGZvcihpbnQgaSA9IDE7IGkgPD0gcTsgaSsrKQogICAgewogICAgICAgIGludCB1LCB4OwoKICAgICAgICBjaW4gPj4gdSA+PiB4OwoKICAgICAgICBxdWVyeVt1XS5wdXNoX2JhY2soe3gsIGl9KTsKICAgIH0KCiAgICBnZXRzeigxLCAwKTsKCiAgICBkZnMoMSwgMCwgMSk7CgogICAgZm9yKGludCBpID0gMTsgaSA8PSBxOyBpKyspCiAgICB7CiAgICAgICAgY291dCA8PCBhbnNbaV0gPDwgJ1xuJzsKICAgIH0KfQ==