// ROOT : DRAGON3012009 : WA in Real Life
#include <bits/stdc++.h>
#define FOR(i,l,r) for(int i = l ; i <= r ; i ++)
#define FORD(i,r,l) for(int i = r ; i >= l ; i --)
#define REP(i, a ) for(int i = 0 ; i < a ; i ++ )
#define compare(v) sort((v).begin(), (v).end()); (v).erase(unique((v).begin(), (v).end()), (v).end());
#define ll long long
#define el "\n"
#define fi first
#define se second
#define _ROOT_ int main()
#define M 1000000007
#define MAXN 1000001
#define Bit(i) (1LL << i )
#define INF (1ll<<30)
#define BLOCK 425
#define NAME "file"
#define debug(a) cout << #a << " = " << a << endl;
using namespace std;
ll n, m, q ;
ll c[MAXN] ;
ll cnt[MAXN ] ;
ll freg[MAXN ] ;
ll res[MAXN ] ;
ll st[MAXN ], fin[MAXN ], tour[MAXN ], timeDfs ;
vector<ll> adj[MAXN ] ;
void addC(ll color ) {
cnt[color ] ++ ;
freg[cnt[color]] ++ ;
}
void delC(ll color ) {
freg[cnt[color]] -- ;
cnt[color] -- ;
}
struct Data {
ll l, r, k, id ;
bool operator < (const Data & other ) const {
ll A = l / BLOCK, B = other.l / BLOCK ;
if(A == B ) return (A % 2 == 0 ? r < other.r : r > other.r ) ;
return A < B ;
}
};
vector<Data> que ;
void dfs(ll u, ll p ) {
st[u] = ++ timeDfs ;
tour[timeDfs ] = u ;
for(ll v : adj[u]) if(v != p ) {
dfs(v, u ) ;
}
fin[u] = timeDfs ;
}
void init() {
cin >> n >> q ;
FOR(i, 1, n ) cin >> c[i] ;
FOR(i, 2, n ) {
ll x, y ;
cin >> x >> y ;
adj[x].push_back(y) ;
adj[y].push_back(x) ;
}
}
void solve() {
dfs(1 , 1 ) ;
FOR(cnt , 1 , q ) {
ll x , k ; cin >> x >> k ;
que.push_back({st[x] , fin[x] , k , cnt }) ;
}
sort(que.begin() , que.end() ) ;
ll l = 1 , r = 0 ;
for(auto [l1 , r1 , k , id ] : que ) {
while(r < r1 ) addC(c[tour[ ++ r]] ) ;
while(l > l1 ) addC(c[tour[-- l ]] ) ;
while(l < l1 ) delC(c[tour[l ++ ]] ) ;
while(r > r1 ) delC(c[tour[r -- ]] ) ;
res[id] = freg[k] ;
}
FOR(i, 1, q ) cout << res[i] << el ;
}
_ROOT_ {
// freopen(NAME".inp", "r", stdin);
// freopen(NAME".out", "w", stdout) ;
ios_base::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
int t = 1; // cin >> t ;
while(t--) {
init();
solve();
}
return (0&0);
}
Ly8gUk9PVCA6IERSQUdPTjMwMTIwMDkgOiBXQSBpbiBSZWFsIExpZmUKI2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CiNkZWZpbmUgRk9SKGksbCxyKSBmb3IoaW50IGkgPSBsIDsgaSA8PSByIDsgaSArKykKI2RlZmluZSBGT1JEKGkscixsKSBmb3IoaW50IGkgPSByIDsgaSA+PSBsIDsgaSAtLSkKI2RlZmluZSBSRVAoaSwgYSApIGZvcihpbnQgaSA9IDAgOyBpIDwgYSA7IGkgKysgKQojZGVmaW5lIGNvbXBhcmUodikgc29ydCgodikuYmVnaW4oKSwgKHYpLmVuZCgpKTsgKHYpLmVyYXNlKHVuaXF1ZSgodikuYmVnaW4oKSwgKHYpLmVuZCgpKSwgKHYpLmVuZCgpKTsKI2RlZmluZSBsbCBsb25nIGxvbmcKI2RlZmluZSBlbCAiXG4iCiNkZWZpbmUgZmkgZmlyc3QKI2RlZmluZSBzZSBzZWNvbmQKI2RlZmluZSBfUk9PVF8gaW50IG1haW4oKQojZGVmaW5lIE0gMTAwMDAwMDAwNwojZGVmaW5lIE1BWE4gMTAwMDAwMQojZGVmaW5lIEJpdChpKSAoMUxMIDw8IGkgKQojZGVmaW5lIElORiAoMWxsPDwzMCkKI2RlZmluZSBCTE9DSyA0MjUKI2RlZmluZSBOQU1FICJmaWxlIgojZGVmaW5lIGRlYnVnKGEpIGNvdXQgPDwgI2EgPDwgIiA9ICIgPDwgYSA8PCBlbmRsOwp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKbGwgbiwgbSwgcSA7CmxsIGNbTUFYTl0gOwpsbCBjbnRbTUFYTiBdIDsKbGwgZnJlZ1tNQVhOIF0gOwpsbCByZXNbTUFYTiBdIDsKbGwgc3RbTUFYTiBdLCBmaW5bTUFYTiBdLCB0b3VyW01BWE4gXSwgdGltZURmcyA7Cgp2ZWN0b3I8bGw+IGFkaltNQVhOIF0gOwoKdm9pZCBhZGRDKGxsIGNvbG9yICkgewogICAgY250W2NvbG9yIF0gKysgOwogICAgZnJlZ1tjbnRbY29sb3JdXSArKyA7Cn0KCnZvaWQgZGVsQyhsbCBjb2xvciApIHsKICAgIGZyZWdbY250W2NvbG9yXV0gLS0gOwogICAgY250W2NvbG9yXSAtLSA7Cn0KCnN0cnVjdCBEYXRhIHsKICAgIGxsIGwsIHIsIGssIGlkIDsKICAgIGJvb2wgb3BlcmF0b3IgPCAoY29uc3QgRGF0YSAmIG90aGVyICkgY29uc3QgewogICAgICAgIGxsIEEgPSBsIC8gQkxPQ0ssIEIgPSBvdGhlci5sIC8gQkxPQ0sgOwogICAgICAgIGlmKEEgPT0gQiApIHJldHVybiAoQSAlIDIgPT0gMCA/IHIgPCBvdGhlci5yIDogciA+IG90aGVyLnIgKSA7CiAgICAgICAgcmV0dXJuIEEgPCBCIDsKICAgIH0KfTsKdmVjdG9yPERhdGE+IHF1ZSA7Cgp2b2lkIGRmcyhsbCB1LCBsbCBwICkgewogICAgc3RbdV0gPSArKyB0aW1lRGZzIDsKICAgIHRvdXJbdGltZURmcyBdID0gdSA7CiAgICBmb3IobGwgdiA6IGFkalt1XSkgaWYodiAhPSBwICkgewogICAgICAgICAgICBkZnModiwgdSApIDsKICAgICAgICB9CiAgICBmaW5bdV0gPSB0aW1lRGZzIDsKfQoKdm9pZCBpbml0KCkgewogICAgY2luID4+IG4gPj4gcSA7CiAgICBGT1IoaSwgMSwgbiApIGNpbiA+PiBjW2ldIDsKICAgIEZPUihpLCAyLCBuICkgewogICAgICAgIGxsIHgsIHkgOwogICAgICAgIGNpbiA+PiB4ID4+IHkgOwogICAgICAgIGFkalt4XS5wdXNoX2JhY2soeSkgOwogICAgICAgIGFkalt5XS5wdXNoX2JhY2soeCkgOwogICAgfQp9Cgp2b2lkIHNvbHZlKCkgewogICAgZGZzKDEgLCAxICkgOwoKICAgIEZPUihjbnQgLCAxICwgcSApIHsKICAgIGxsIHggLCBrIDsgY2luID4+IHggPj4gayA7CiAgICBxdWUucHVzaF9iYWNrKHtzdFt4XSAsIGZpblt4XSAsIGsgLCBjbnQgfSkgOwogICAgfQogICAgc29ydChxdWUuYmVnaW4oKSAsIHF1ZS5lbmQoKSApIDsKICAgIGxsIGwgPSAxICwgciA9IDAgOwogICAgZm9yKGF1dG8gW2wxICwgcjEgLCBrICwgaWQgXSA6IHF1ZSApIHsKCiAgICAgICAgd2hpbGUociA8IHIxICkgYWRkQyhjW3RvdXJbICsrIHJdXSApIDsKICAgICAgICB3aGlsZShsID4gbDEgKSBhZGRDKGNbdG91clstLSBsIF1dICkgOwoKICAgICAgICB3aGlsZShsIDwgbDEgKSBkZWxDKGNbdG91cltsICsrIF1dICkgOwogICAgICAgIHdoaWxlKHIgPiByMSApIGRlbEMoY1t0b3VyW3IgLS0gXV0gKSA7CiAgICAgICAgcmVzW2lkXSA9IGZyZWdba10gOwogICAgfQoKICAgIEZPUihpLCAxLCBxICkgY291dCA8PCByZXNbaV0gPDwgZWwgOwp9CgoKX1JPT1RfIHsKLy8gICAgZnJlb3BlbihOQU1FIi5pbnAiLCAiciIsIHN0ZGluKTsKLy8gICAgZnJlb3BlbihOQU1FIi5vdXQiLCAidyIsIHN0ZG91dCkgOwogICAgaW9zX2Jhc2U6OnN5bmNfd2l0aF9zdGRpbygwKTsKICAgIGNpbi50aWUoMCk7CiAgICBjb3V0LnRpZSgwKTsKICAgIGludCB0ID0gMTsgLy8gY2luID4+IHQgOwogICAgd2hpbGUodC0tKSB7CiAgICAgICAgaW5pdCgpOwogICAgICAgIHNvbHZlKCk7CiAgICB9CiAgICByZXR1cm4gKDAmMCk7Cn0K