#include <bits/stdc++.h>
using namespace std;
const int N = 200005;
int n,q;
int val[N];
vector<int> g[N];
int in[N],out[N],euler[2*N],tim=0;
int dep[N],par[N][20];
long long f[N];
void dfs(int u,int p){
in[u]=++tim; euler[tim]=u;
par[u][0]=p;
for(int i=1;i<20;i++) par[u][i]=par[par[u][i-1]][i-1];
for(int v:g[u]) if(v!=p){
dep[v]=dep[u]+1;
f[v]=f[u]+val[v];
dfs(v,u);
}
out[u]=++tim; euler[tim]=u;
}
int lca(int u,int v){
if(dep[u]<dep[v]) swap(u,v);
for(int i=19;i>=0;i--) if(dep[par[u][i]]>=dep[v]) u=par[u][i];
if(u==v) return u;
for(int i=19;i>=0;i--) if(par[u][i]!=par[v][i]) u=par[u][i],v=par[v][i];
return par[u][0];
}
struct Fenwick{
vector<int> bit;
Fenwick(int n){bit.assign(n+2,0);}
void upd(int i,int v){for(;i<(int)bit.size();i+=i&-i) bit[i]+=v;}
int get(int i){int r=0;for(;i>0;i-=i&-i) r+=bit[i];return r;}
int range(int l,int r){return get(r)-get(l-1);}
};
struct Q{int l,r,u,v,lc,id;};
int BLOCK;
bool cmp(Q a,Q b){
if(a.l/BLOCK!=b.l/BLOCK) return a.l<b.l;
return a.r<b.r;
}
int main(){
ios::sync_with_stdio(0);
cin.tie(0);
cin>>n>>q;
for(int i=1;i<=n;i++) cin>>val[i];
for(int i=1;i<n;i++){
int u,v;cin>>u>>v;
g[u].push_back(v);
g[v].push_back(u);
}
f[1]=val[1];
dfs(1,0);
vector<long long> comp;
for(int i=1;i<=n;i++) comp.push_back(f[i]);
vector<pair<int,long long>> needList;
vector<Q> qs;
for(int i=1;i<=q;i++){
int u,v;cin>>u>>v;
int lc=lca(u,v);
int l=in[u],r=in[v];
if(l>r) swap(l,r);
qs.push_back({l,r,u,v,lc,i});
long long need=(lc==1?0:f[par[lc][0]]);
comp.push_back(need);
needList.push_back({i,need});
}
sort(comp.begin(),comp.end());
comp.erase(unique(comp.begin(),comp.end()),comp.end());
auto getId=[&](long long x){
return (int)(lower_bound(comp.begin(),comp.end(),x)-comp.begin()+1);
};
vector<int> fid(n+1);
for(int i=1;i<=n;i++) fid[i]=getId(f[i]);
vector<int> needId(q+1);
for(auto [i,v]:needList) needId[i]=getId(v);
BLOCK=sqrt(tim);
sort(qs.begin(),qs.end(),cmp);
Fenwick fw(comp.size()+5);
vector<int> on(n+1,0),ans(q+1);
auto add=[&](int idx){
int u=euler[idx]; if(!u) return;
if(on[u]){ fw.upd(fid[u],-1); on[u]=0; }
else{ fw.upd(fid[u],+1); on[u]=1; }
};
int L=1,R=0;
for(auto qu:qs){
while(L>qu.l) add(--L);
while(R<qu.r) add(++R);
while(L<qu.l) add(L++);
while(R>qu.r) add(R--);
int id=needId[qu.id];
ans[qu.id]=fw.range(id+1,comp.size());
}
for(int i=1;i<=q;i++) cout<<ans[i]<<"\n";
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7Cgpjb25zdCBpbnQgTiA9IDIwMDAwNTsKCmludCBuLHE7CmludCB2YWxbTl07CnZlY3RvcjxpbnQ+IGdbTl07CgppbnQgaW5bTl0sb3V0W05dLGV1bGVyWzIqTl0sdGltPTA7CmludCBkZXBbTl0scGFyW05dWzIwXTsKbG9uZyBsb25nIGZbTl07Cgp2b2lkIGRmcyhpbnQgdSxpbnQgcCl7CiAgICBpblt1XT0rK3RpbTsgZXVsZXJbdGltXT11OwogICAgcGFyW3VdWzBdPXA7CiAgICBmb3IoaW50IGk9MTtpPDIwO2krKykgcGFyW3VdW2ldPXBhcltwYXJbdV1baS0xXV1baS0xXTsKICAgIGZvcihpbnQgdjpnW3VdKSBpZih2IT1wKXsKICAgICAgICBkZXBbdl09ZGVwW3VdKzE7CiAgICAgICAgZlt2XT1mW3VdK3ZhbFt2XTsKICAgICAgICBkZnModix1KTsKICAgIH0KICAgIG91dFt1XT0rK3RpbTsgZXVsZXJbdGltXT11Owp9CgppbnQgbGNhKGludCB1LGludCB2KXsKICAgIGlmKGRlcFt1XTxkZXBbdl0pIHN3YXAodSx2KTsKICAgIGZvcihpbnQgaT0xOTtpPj0wO2ktLSkgaWYoZGVwW3Bhclt1XVtpXV0+PWRlcFt2XSkgdT1wYXJbdV1baV07CiAgICBpZih1PT12KSByZXR1cm4gdTsKICAgIGZvcihpbnQgaT0xOTtpPj0wO2ktLSkgaWYocGFyW3VdW2ldIT1wYXJbdl1baV0pIHU9cGFyW3VdW2ldLHY9cGFyW3ZdW2ldOwogICAgcmV0dXJuIHBhclt1XVswXTsKfQoKc3RydWN0IEZlbndpY2t7CiAgICB2ZWN0b3I8aW50PiBiaXQ7CiAgICBGZW53aWNrKGludCBuKXtiaXQuYXNzaWduKG4rMiwwKTt9CiAgICB2b2lkIHVwZChpbnQgaSxpbnQgdil7Zm9yKDtpPChpbnQpYml0LnNpemUoKTtpKz1pJi1pKSBiaXRbaV0rPXY7fQogICAgaW50IGdldChpbnQgaSl7aW50IHI9MDtmb3IoO2k+MDtpLT1pJi1pKSByKz1iaXRbaV07cmV0dXJuIHI7fQogICAgaW50IHJhbmdlKGludCBsLGludCByKXtyZXR1cm4gZ2V0KHIpLWdldChsLTEpO30KfTsKCnN0cnVjdCBRe2ludCBsLHIsdSx2LGxjLGlkO307CmludCBCTE9DSzsKYm9vbCBjbXAoUSBhLFEgYil7CiAgICBpZihhLmwvQkxPQ0shPWIubC9CTE9DSykgcmV0dXJuIGEubDxiLmw7CiAgICByZXR1cm4gYS5yPGIucjsKfQoKaW50IG1haW4oKXsKICAgIGlvczo6c3luY193aXRoX3N0ZGlvKDApOwogICAgY2luLnRpZSgwKTsKCiAgICBjaW4+Pm4+PnE7CiAgICBmb3IoaW50IGk9MTtpPD1uO2krKykgY2luPj52YWxbaV07CiAgICBmb3IoaW50IGk9MTtpPG47aSsrKXsKICAgICAgICBpbnQgdSx2O2Npbj4+dT4+djsKICAgICAgICBnW3VdLnB1c2hfYmFjayh2KTsKICAgICAgICBnW3ZdLnB1c2hfYmFjayh1KTsKICAgIH0KICAgIGZbMV09dmFsWzFdOwogICAgZGZzKDEsMCk7CgogICAgdmVjdG9yPGxvbmcgbG9uZz4gY29tcDsKICAgIGZvcihpbnQgaT0xO2k8PW47aSsrKSBjb21wLnB1c2hfYmFjayhmW2ldKTsKICAgIHZlY3RvcjxwYWlyPGludCxsb25nIGxvbmc+PiBuZWVkTGlzdDsKICAgIHZlY3RvcjxRPiBxczsKICAgIGZvcihpbnQgaT0xO2k8PXE7aSsrKXsKICAgICAgICBpbnQgdSx2O2Npbj4+dT4+djsKICAgICAgICBpbnQgbGM9bGNhKHUsdik7CiAgICAgICAgaW50IGw9aW5bdV0scj1pblt2XTsKICAgICAgICBpZihsPnIpIHN3YXAobCxyKTsKICAgICAgICBxcy5wdXNoX2JhY2soe2wscix1LHYsbGMsaX0pOwogICAgICAgIGxvbmcgbG9uZyBuZWVkPShsYz09MT8wOmZbcGFyW2xjXVswXV0pOwogICAgICAgIGNvbXAucHVzaF9iYWNrKG5lZWQpOwogICAgICAgIG5lZWRMaXN0LnB1c2hfYmFjayh7aSxuZWVkfSk7CiAgICB9CiAgICBzb3J0KGNvbXAuYmVnaW4oKSxjb21wLmVuZCgpKTsKICAgIGNvbXAuZXJhc2UodW5pcXVlKGNvbXAuYmVnaW4oKSxjb21wLmVuZCgpKSxjb21wLmVuZCgpKTsKICAgIGF1dG8gZ2V0SWQ9WyZdKGxvbmcgbG9uZyB4KXsKICAgICAgICByZXR1cm4gKGludCkobG93ZXJfYm91bmQoY29tcC5iZWdpbigpLGNvbXAuZW5kKCkseCktY29tcC5iZWdpbigpKzEpOwogICAgfTsKCiAgICB2ZWN0b3I8aW50PiBmaWQobisxKTsKICAgIGZvcihpbnQgaT0xO2k8PW47aSsrKSBmaWRbaV09Z2V0SWQoZltpXSk7CiAgICB2ZWN0b3I8aW50PiBuZWVkSWQocSsxKTsKICAgIGZvcihhdXRvIFtpLHZdOm5lZWRMaXN0KSBuZWVkSWRbaV09Z2V0SWQodik7CgogICAgQkxPQ0s9c3FydCh0aW0pOwogICAgc29ydChxcy5iZWdpbigpLHFzLmVuZCgpLGNtcCk7CgogICAgRmVud2ljayBmdyhjb21wLnNpemUoKSs1KTsKICAgIHZlY3RvcjxpbnQ+IG9uKG4rMSwwKSxhbnMocSsxKTsKCiAgICBhdXRvIGFkZD1bJl0oaW50IGlkeCl7CiAgICAgICAgaW50IHU9ZXVsZXJbaWR4XTsgaWYoIXUpIHJldHVybjsKICAgICAgICBpZihvblt1XSl7IGZ3LnVwZChmaWRbdV0sLTEpOyBvblt1XT0wOyB9CiAgICAgICAgZWxzZXsgZncudXBkKGZpZFt1XSwrMSk7IG9uW3VdPTE7IH0KICAgIH07CgogICAgaW50IEw9MSxSPTA7CiAgICBmb3IoYXV0byBxdTpxcyl7CiAgICAgICAgd2hpbGUoTD5xdS5sKSBhZGQoLS1MKTsKICAgICAgICB3aGlsZShSPHF1LnIpIGFkZCgrK1IpOwogICAgICAgIHdoaWxlKEw8cXUubCkgYWRkKEwrKyk7CiAgICAgICAgd2hpbGUoUj5xdS5yKSBhZGQoUi0tKTsKICAgICAgICBpbnQgaWQ9bmVlZElkW3F1LmlkXTsKICAgICAgICBhbnNbcXUuaWRdPWZ3LnJhbmdlKGlkKzEsY29tcC5zaXplKCkpOwogICAgfQogICAgZm9yKGludCBpPTE7aTw9cTtpKyspIGNvdXQ8PGFuc1tpXTw8IlxuIjsKfQo=