#include <bits/stdc++.h>
using namespace std;
const int N = 200005;
int n,q;
int val[N],in[N],out[N],euler[2*N],tim=0;
int dep[N],par[N][20];
long long f[N];
vector<int> g[N];
vector<long long> comp;
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);
comp.reserve(n);
for(int i=1;i<=n;i++) comp.push_back(f[i]);
sort(comp.begin(),comp.end());
comp.erase(unique(comp.begin(),comp.end()),comp.end());
vector<int> fid(n+1);
for(int i=1;i<=n;i++) fid[i]=lower_bound(comp.begin(),comp.end(),f[i])-comp.begin()+1;
BLOCK=sqrt(tim);
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});
}
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]^=1;}
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--);
long long need=(qu.lc==1?0:f[par[qu.lc][0]]);
int id=upper_bound(comp.begin(),comp.end(),need)-comp.begin();
ans[qu.id]=fw.range(id+1,comp.size());
}
for(int i=1;i<=q;i++) cout<<ans[i]<<"\n";
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7Cgpjb25zdCBpbnQgTiA9IDIwMDAwNTsKaW50IG4scTsKaW50IHZhbFtOXSxpbltOXSxvdXRbTl0sZXVsZXJbMipOXSx0aW09MDsKaW50IGRlcFtOXSxwYXJbTl1bMjBdOwpsb25nIGxvbmcgZltOXTsKdmVjdG9yPGludD4gZ1tOXTsKdmVjdG9yPGxvbmcgbG9uZz4gY29tcDsKCnZvaWQgZGZzKGludCB1LGludCBwKXsKICAgIGluW3VdPSsrdGltOyBldWxlclt0aW1dPXU7CiAgICBwYXJbdV1bMF09cDsKICAgIGZvcihpbnQgaT0xO2k8MjA7aSsrKSBwYXJbdV1baV09cGFyW3Bhclt1XVtpLTFdXVtpLTFdOwogICAgZm9yKGludCB2OmdbdV0pIGlmKHYhPXApewogICAgICAgIGRlcFt2XT1kZXBbdV0rMTsKICAgICAgICBmW3ZdPWZbdV0rdmFsW3ZdOwogICAgICAgIGRmcyh2LHUpOwogICAgfQogICAgb3V0W3VdPSsrdGltOyBldWxlclt0aW1dPXU7Cn0KCmludCBsY2EoaW50IHUsaW50IHYpewogICAgaWYoZGVwW3VdPGRlcFt2XSkgc3dhcCh1LHYpOwogICAgZm9yKGludCBpPTE5O2k+PTA7aS0tKSBpZihkZXBbcGFyW3VdW2ldXT49ZGVwW3ZdKSB1PXBhclt1XVtpXTsKICAgIGlmKHU9PXYpIHJldHVybiB1OwogICAgZm9yKGludCBpPTE5O2k+PTA7aS0tKSBpZihwYXJbdV1baV0hPXBhclt2XVtpXSkgdT1wYXJbdV1baV0sdj1wYXJbdl1baV07CiAgICByZXR1cm4gcGFyW3VdWzBdOwp9CgpzdHJ1Y3QgRmVud2lja3sKICAgIHZlY3RvcjxpbnQ+IGJpdDsKICAgIEZlbndpY2soaW50IG4pe2JpdC5hc3NpZ24obisyLDApO30KICAgIHZvaWQgdXBkKGludCBpLGludCB2KXtmb3IoO2k8KGludCliaXQuc2l6ZSgpO2krPWkmLWkpIGJpdFtpXSs9djt9CiAgICBpbnQgZ2V0KGludCBpKXtpbnQgcj0wO2Zvcig7aT4wO2ktPWkmLWkpIHIrPWJpdFtpXTtyZXR1cm4gcjt9CiAgICBpbnQgcmFuZ2UoaW50IGwsaW50IHIpe3JldHVybiBnZXQociktZ2V0KGwtMSk7fQp9OwoKc3RydWN0IFF7aW50IGwscix1LHYsbGMsaWQ7fTsKaW50IEJMT0NLOwpib29sIGNtcChRIGEsUSBiKXsKICAgIGlmKGEubC9CTE9DSyE9Yi5sL0JMT0NLKSByZXR1cm4gYS5sPGIubDsKICAgIHJldHVybiBhLnI8Yi5yOwp9CgppbnQgbWFpbigpewogICAgaW9zOjpzeW5jX3dpdGhfc3RkaW8oMCk7CiAgICBjaW4udGllKDApOwogICAgY2luPj5uPj5xOwogICAgZm9yKGludCBpPTE7aTw9bjtpKyspIGNpbj4+dmFsW2ldOwogICAgZm9yKGludCBpPTE7aTxuO2krKyl7CiAgICAgICAgaW50IHUsdjtjaW4+PnU+PnY7CiAgICAgICAgZ1t1XS5wdXNoX2JhY2sodik7CiAgICAgICAgZ1t2XS5wdXNoX2JhY2sodSk7CiAgICB9CiAgICBmWzFdPXZhbFsxXTsKICAgIGRmcygxLDApOwogICAgY29tcC5yZXNlcnZlKG4pOwogICAgZm9yKGludCBpPTE7aTw9bjtpKyspIGNvbXAucHVzaF9iYWNrKGZbaV0pOwogICAgc29ydChjb21wLmJlZ2luKCksY29tcC5lbmQoKSk7CiAgICBjb21wLmVyYXNlKHVuaXF1ZShjb21wLmJlZ2luKCksY29tcC5lbmQoKSksY29tcC5lbmQoKSk7CiAgICB2ZWN0b3I8aW50PiBmaWQobisxKTsKICAgIGZvcihpbnQgaT0xO2k8PW47aSsrKSBmaWRbaV09bG93ZXJfYm91bmQoY29tcC5iZWdpbigpLGNvbXAuZW5kKCksZltpXSktY29tcC5iZWdpbigpKzE7CiAgICBCTE9DSz1zcXJ0KHRpbSk7CiAgICB2ZWN0b3I8UT4gcXM7CiAgICBmb3IoaW50IGk9MTtpPD1xO2krKyl7CiAgICAgICAgaW50IHUsdjtjaW4+PnU+PnY7CiAgICAgICAgaW50IGxjPWxjYSh1LHYpOwogICAgICAgIGludCBsPWluW3VdLHI9aW5bdl07IGlmKGw+cikgc3dhcChsLHIpOwogICAgICAgIHFzLnB1c2hfYmFjayh7bCxyLHUsdixsYyxpfSk7CiAgICB9CiAgICBzb3J0KHFzLmJlZ2luKCkscXMuZW5kKCksY21wKTsKICAgIEZlbndpY2sgZncoY29tcC5zaXplKCkrNSk7CiAgICB2ZWN0b3I8aW50PiBvbihuKzEsMCksYW5zKHErMSk7CiAgICBhdXRvIGFkZD1bJl0oaW50IGlkeCl7CiAgICAgICAgaW50IHU9ZXVsZXJbaWR4XTsgaWYoIXUpIHJldHVybjsKICAgICAgICBpZihvblt1XSl7ZncudXBkKGZpZFt1XSwtMSk7b25bdV1ePTE7fQogICAgICAgIGVsc2V7ZncudXBkKGZpZFt1XSwrMSk7b25bdV1ePTE7fQogICAgfTsKICAgIGludCBMPTEsUj0wOwogICAgZm9yKGF1dG8gcXU6cXMpewogICAgICAgIHdoaWxlKEw+cXUubCkgYWRkKC0tTCk7CiAgICAgICAgd2hpbGUoUjxxdS5yKSBhZGQoKytSKTsKICAgICAgICB3aGlsZShMPHF1LmwpIGFkZChMKyspOwogICAgICAgIHdoaWxlKFI+cXUucikgYWRkKFItLSk7CiAgICAgICAgbG9uZyBsb25nIG5lZWQ9KHF1LmxjPT0xPzA6ZltwYXJbcXUubGNdWzBdXSk7CiAgICAgICAgaW50IGlkPXVwcGVyX2JvdW5kKGNvbXAuYmVnaW4oKSxjb21wLmVuZCgpLG5lZWQpLWNvbXAuYmVnaW4oKTsKICAgICAgICBhbnNbcXUuaWRdPWZ3LnJhbmdlKGlkKzEsY29tcC5zaXplKCkpOwogICAgfQogICAgZm9yKGludCBpPTE7aTw9cTtpKyspIGNvdXQ8PGFuc1tpXTw8IlxuIjsKfQo=