#include<bits/stdc++.h>
using namespace std;
typedef pair<int,int> II;
typedef vector< II > VII;
typedef vector<int> VI;
typedef vector< VI > VVI;
typedef long long int LL;
#define PB push_back
#define MP make_pair
#define F first
#define S second
#define SZ(a) (int)(a.size())
#define ALL(a) a.begin(),a.end()
#define SET(a,b) memset(a,b,sizeof(a))
#define si(n) scanf("%d",&n)
#define dout(n) printf("%d\n",n)
#define sll(n) scanf("%lld",&n)
#define lldout(n) printf("%lld\n",n)
#define fast_io ios_base::sync_with_stdio(false);cin.tie(NULL)
#define TRACE
#ifdef TRACE
#define trace(...) __f(#__VA_ARGS__, __VA_ARGS__)
template <typename Arg1>
void __f(const char* name, Arg1&& arg1){
cerr << name << " : " << arg1 << std::endl;
}
template <typename Arg1, typename... Args>
void __f(const char* names, Arg1&& arg1, Args&&... args){
const char* comma = strchr(names + 1, ',');cerr.write(names, comma - names) << " : " << arg1<<" | ";__f(comma+1, args...);
}
#else
#define trace(...)
#endif
//FILE *fin = freopen("in","r",stdin);
//FILE *fout = freopen("out","w",stdout);
struct node{
int l,r,c,i;
}q[100005];
VI g[200005];
VI v;
int c[200005], timee=0, in[200005], out[200005], vs[200005], cnt[100005], f[100005], minn, ans=0;
const int block = 447;
bool foo(struct node a,struct node b){
if(a.l/block!=b.l/block)
return a.l/block < b.l/block;
return a.r < b.r;
}
void dfs(int u){
trace(u);
vs[u]=1;
in[u]=timee++;
v.PB(c[u]);
for(int i=0;i<SZ(g[u]);i++){
int w = g[u][i];
if(!vs[w])
dfs(w);
}
out[u]=timee;
}
void add(int i){
cnt[v[i]]++;
if(v[i]==minn)
ans++;
}
void remove(int i){
cnt[v[i]]--;
if(v[i]==minn-1)
ans--;
}
int main(){
int n,m,a,b;
si(n);si(m);
for(int i=1;i<=n;i++) si(c[i]);
for(int i=1;i<n;i++){
si(a);si(b);
g[a].PB(b);
g[b].PB(a);
}
dfs(1);
for(int i=0;i<SZ(v);i++)
cout << v[i] << ' ';
cout << endl;
for(int i=0;i<m;i++){
si(a);si(b);
q[i].l = in[a];
q[i].r = out[a];
q[i].c = b;
q[i].i = i;
}
sort(q,q+m,foo);
int L=0, R=0;
for(int i=0;i<m;i++){
int l = q[i].l;
int r = q[i].r;
trace(l,r);
int j = q[i].i;
minn = q[i].c;
while(L<l){
remove(L);
L++;
}
while(L>l){
add(L-1);
L--;
}
while(R<=r){
add(R);
R++;
}
while(R>r+1){
remove(R-1);
R--;
}
f[j] = ans;
}
for(int i=0;i<m;i++) dout(f[i]);
return 0;
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KCnVzaW5nIG5hbWVzcGFjZSBzdGQ7Cgp0eXBlZGVmIHBhaXI8aW50LGludD4gICBJSTsKdHlwZWRlZiB2ZWN0b3I8IElJID4gICAgICBWSUk7CnR5cGVkZWYgdmVjdG9yPGludD4gICAgIFZJOwp0eXBlZGVmIHZlY3RvcjwgVkkgPiAJVlZJOwp0eXBlZGVmIGxvbmcgbG9uZyBpbnQgCUxMOwoKI2RlZmluZSBQQiBwdXNoX2JhY2sKI2RlZmluZSBNUCBtYWtlX3BhaXIKI2RlZmluZSBGIGZpcnN0CiNkZWZpbmUgUyBzZWNvbmQKI2RlZmluZSBTWihhKSAoaW50KShhLnNpemUoKSkKI2RlZmluZSBBTEwoYSkgYS5iZWdpbigpLGEuZW5kKCkKI2RlZmluZSBTRVQoYSxiKSBtZW1zZXQoYSxiLHNpemVvZihhKSkKCiNkZWZpbmUgc2kobikgc2NhbmYoIiVkIiwmbikKI2RlZmluZSBkb3V0KG4pIHByaW50ZigiJWRcbiIsbikKI2RlZmluZSBzbGwobikgc2NhbmYoIiVsbGQiLCZuKQojZGVmaW5lIGxsZG91dChuKSBwcmludGYoIiVsbGRcbiIsbikKI2RlZmluZSBmYXN0X2lvIGlvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW8oZmFsc2UpO2Npbi50aWUoTlVMTCkKCiNkZWZpbmUgVFJBQ0UKCiNpZmRlZiBUUkFDRQojZGVmaW5lIHRyYWNlKC4uLikgX19mKCNfX1ZBX0FSR1NfXywgX19WQV9BUkdTX18pCnRlbXBsYXRlIDx0eXBlbmFtZSBBcmcxPgp2b2lkIF9fZihjb25zdCBjaGFyKiBuYW1lLCBBcmcxJiYgYXJnMSl7CgljZXJyIDw8IG5hbWUgPDwgIiA6ICIgPDwgYXJnMSA8PCBzdGQ6OmVuZGw7Cn0KdGVtcGxhdGUgPHR5cGVuYW1lIEFyZzEsIHR5cGVuYW1lLi4uIEFyZ3M+CnZvaWQgX19mKGNvbnN0IGNoYXIqIG5hbWVzLCBBcmcxJiYgYXJnMSwgQXJncyYmLi4uIGFyZ3MpewoJY29uc3QgY2hhciogY29tbWEgPSBzdHJjaHIobmFtZXMgKyAxLCAnLCcpO2NlcnIud3JpdGUobmFtZXMsIGNvbW1hIC0gbmFtZXMpIDw8ICIgOiAiIDw8IGFyZzE8PCIgfCAiO19fZihjb21tYSsxLCBhcmdzLi4uKTsKfQojZWxzZQojZGVmaW5lIHRyYWNlKC4uLikKI2VuZGlmCgovL0ZJTEUgKmZpbiA9IGZyZW9wZW4oImluIiwiciIsc3RkaW4pOwovL0ZJTEUgKmZvdXQgPSBmcmVvcGVuKCJvdXQiLCJ3IixzdGRvdXQpOwoKc3RydWN0IG5vZGV7CglpbnQgbCxyLGMsaTsKfXFbMTAwMDA1XTsKVkkgZ1syMDAwMDVdOwpWSSB2OwppbnQgY1syMDAwMDVdLCB0aW1lZT0wLCBpblsyMDAwMDVdLCBvdXRbMjAwMDA1XSwgdnNbMjAwMDA1XSwgY250WzEwMDAwNV0sIGZbMTAwMDA1XSwgbWlubiwgYW5zPTA7CmNvbnN0IGludCBibG9jayA9CTQ0NzsKCmJvb2wgZm9vKHN0cnVjdCBub2RlIGEsc3RydWN0IG5vZGUgYil7CglpZihhLmwvYmxvY2shPWIubC9ibG9jaykKCQlyZXR1cm4gYS5sL2Jsb2NrIDwgYi5sL2Jsb2NrOwoJcmV0dXJuIGEuciA8IGIucjsKfQoKdm9pZCBkZnMoaW50IHUpewoJdHJhY2UodSk7Cgl2c1t1XT0xOwoJaW5bdV09dGltZWUrKzsKCXYuUEIoY1t1XSk7Cglmb3IoaW50IGk9MDtpPFNaKGdbdV0pO2krKyl7CgkJaW50IHcgPSBnW3VdW2ldOwoJCWlmKCF2c1t3XSkKCQkJZGZzKHcpOwoJfQoJb3V0W3VdPXRpbWVlOwp9Cgp2b2lkIGFkZChpbnQgaSl7CgljbnRbdltpXV0rKzsKCWlmKHZbaV09PW1pbm4pCgkJYW5zKys7Cn0KCnZvaWQgcmVtb3ZlKGludCBpKXsKCWNudFt2W2ldXS0tOwoJaWYodltpXT09bWlubi0xKQoJCWFucy0tOwp9CgppbnQgbWFpbigpewoJaW50IG4sbSxhLGI7CglzaShuKTtzaShtKTsKCWZvcihpbnQgaT0xO2k8PW47aSsrKSBzaShjW2ldKTsKCWZvcihpbnQgaT0xO2k8bjtpKyspewoJCXNpKGEpO3NpKGIpOwoJCWdbYV0uUEIoYik7CgkJZ1tiXS5QQihhKTsKCX0KCWRmcygxKTsKCWZvcihpbnQgaT0wO2k8U1oodik7aSsrKQoJCWNvdXQgPDwgdltpXSA8PCAnICc7Cgljb3V0IDw8IGVuZGw7Cglmb3IoaW50IGk9MDtpPG07aSsrKXsKCQlzaShhKTtzaShiKTsKCQlxW2ldLmwgPSBpblthXTsKCQlxW2ldLnIgPSBvdXRbYV07CgkJcVtpXS5jID0gYjsKCQlxW2ldLmkgPSBpOwoJfQoJc29ydChxLHErbSxmb28pOwkKCWludCBMPTAsIFI9MDsKCWZvcihpbnQgaT0wO2k8bTtpKyspewoJCWludCBsID0gcVtpXS5sOwoJCWludCByID0gcVtpXS5yOwoJCXRyYWNlKGwscik7CgkJaW50IGogPSBxW2ldLmk7CgkJbWlubiA9IHFbaV0uYzsKCQl3aGlsZShMPGwpewoJCQlyZW1vdmUoTCk7CgkJCUwrKzsKCQl9CQoJCXdoaWxlKEw+bCl7CgkJCWFkZChMLTEpOwoJCQlMLS07CgkJfQoJCXdoaWxlKFI8PXIpewoJCQlhZGQoUik7CgkJCVIrKzsKCQl9CgkJd2hpbGUoUj5yKzEpewoJCQlyZW1vdmUoUi0xKTsKCQkJUi0tOwoJCX0KCQlmW2pdID0gYW5zOwoJfQoJZm9yKGludCBpPTA7aTxtO2krKykgZG91dChmW2ldKTsKCXJldHVybiAwOwp9