#include <bits/stdc++.h>
using namespace std;
struct Fenwick {
int n; vector<int> bit;
Fenwick(int n=0): n(n), bit(n+1,0) {}
void add(int i,int v){ for(; i<=n; i+=i&-i) bit[i]+=v; }
int sumPrefix(int i){ int s=0; for(; i>0; i-=i&-i) s+=bit[i]; return s; }
int sumRange(int l,int r){ if(r<l) return 0; return sumPrefix(r)-sumPrefix(l-1); }
};
int main(){
ios::sync_with_stdio(false);
cin.tie(nullptr);
int n,q;
if(!(cin>>n>>q)) return 0;
vector<int> a(n+1);
for(int i=1;i<=n;i++) cin>>a[i];
vector<vector<int>> g(n+1);
for(int i=0,u,v;i<n-1;i++){ cin>>u>>v; g[u].push_back(v); g[v].push_back(u); }
int LOG=20;
vector<int> depth(n+1), parent(n+1);
vector<vector<int>> up(LOG, vector<int>(n+1));
vector<long long> f(n+1);
function<void(int,int)> dfs1 = [&](int u,int p){
parent[u]=p; up[0][u]=p; depth[u]=(p?depth[p]+1:0);
f[u]= (p?f[p]:0) + a[u];
for(int k=1;k<LOG;k++) up[k][u]= up[k-1][u]? up[k-1][ up[k-1][u] ]:0;
for(int v: g[u]) if(v!=p) dfs1(v,u);
};
dfs1(1,0);
auto lca = [&](int u,int v){
if(depth[u]<depth[v]) swap(u,v);
int d=depth[u]-depth[v];
for(int k=0;k<LOG;k++) if(d>>k&1) u=up[k][u];
if(u==v) return u;
for(int k=LOG-1;k>=0;k--) if(up[k][u]!=up[k][v]){ u=up[k][u]; v=up[k][v]; }
return up[0][u];
};
struct Item{ long long need; int id,which; };
vector<vector<Item>> at(n+1);
vector<long long> need(q), chk(q);
vector<int> cu(q), cv(q), cl(q);
vector<long long> coord;
for(int i=1;i<=n;i++) coord.push_back(f[i]);
vector<pair<int,int>> qs(q);
for(int i=0;i<q;i++){
int u,v; cin>>u>>v; qs[i]={u,v};
int L=lca(u,v);
long long nd = f[u] - 2LL*f[L];
need[i]=nd;
chk[i] = (f[L] > nd);
at[u].push_back({nd,i,0});
at[v].push_back({nd,i,1});
at[L].push_back({nd,i,2});
coord.push_back(nd);
}
sort(coord.begin(), coord.end());
coord.erase(unique(coord.begin(), coord.end()), coord.end());
auto idx = [&](long long x){ return int(upper_bound(coord.begin(), coord.end(), x) - coord.begin()); };
Fenwick bit((int)coord.size()+2);
function<void(int,int)> dfs2 = [&](int u,int p){
bit.add(idx(f[u])+1,1);
for(auto &it: at[u]){
int pos = idx(it.need)+1;
int greater = bit.sumRange(pos+1, bit.n);
if(it.which==0) cu[it.id]=greater;
else if(it.which==1) cv[it.id]=greater;
else cl[it.id]=greater;
}
for(int v: g[u]) if(v!=p) dfs2(v,u);
bit.add(idx(f[u])+1,-1);
};
dfs2(1,0);
for(int i=0;i<q;i++){
long long ans = (long long)cu[i] + cv[i] - 2LL*cl[i] + chk[i];
cout<<ans<<"\n";
}
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgpzdHJ1Y3QgRmVud2ljayB7CiAgICBpbnQgbjsgdmVjdG9yPGludD4gYml0OwogICAgRmVud2ljayhpbnQgbj0wKTogbihuKSwgYml0KG4rMSwwKSB7fQogICAgdm9pZCBhZGQoaW50IGksaW50IHYpeyBmb3IoOyBpPD1uOyBpKz1pJi1pKSBiaXRbaV0rPXY7IH0KICAgIGludCBzdW1QcmVmaXgoaW50IGkpeyBpbnQgcz0wOyBmb3IoOyBpPjA7IGktPWkmLWkpIHMrPWJpdFtpXTsgcmV0dXJuIHM7IH0KICAgIGludCBzdW1SYW5nZShpbnQgbCxpbnQgcil7IGlmKHI8bCkgcmV0dXJuIDA7IHJldHVybiBzdW1QcmVmaXgociktc3VtUHJlZml4KGwtMSk7IH0KfTsKCmludCBtYWluKCl7CiAgICBpb3M6OnN5bmNfd2l0aF9zdGRpbyhmYWxzZSk7CiAgICBjaW4udGllKG51bGxwdHIpOwogICAgaW50IG4scTsgCiAgICBpZighKGNpbj4+bj4+cSkpIHJldHVybiAwOwogICAgdmVjdG9yPGludD4gYShuKzEpOwogICAgZm9yKGludCBpPTE7aTw9bjtpKyspIGNpbj4+YVtpXTsKICAgIHZlY3Rvcjx2ZWN0b3I8aW50Pj4gZyhuKzEpOwogICAgZm9yKGludCBpPTAsdSx2O2k8bi0xO2krKyl7IGNpbj4+dT4+djsgZ1t1XS5wdXNoX2JhY2sodik7IGdbdl0ucHVzaF9iYWNrKHUpOyB9CiAgICBpbnQgTE9HPTIwOwogICAgdmVjdG9yPGludD4gZGVwdGgobisxKSwgcGFyZW50KG4rMSk7CiAgICB2ZWN0b3I8dmVjdG9yPGludD4+IHVwKExPRywgdmVjdG9yPGludD4obisxKSk7CiAgICB2ZWN0b3I8bG9uZyBsb25nPiBmKG4rMSk7CiAgICBmdW5jdGlvbjx2b2lkKGludCxpbnQpPiBkZnMxID0gWyZdKGludCB1LGludCBwKXsKICAgICAgICBwYXJlbnRbdV09cDsgdXBbMF1bdV09cDsgZGVwdGhbdV09KHA/ZGVwdGhbcF0rMTowKTsKICAgICAgICBmW3VdPSAocD9mW3BdOjApICsgYVt1XTsKICAgICAgICBmb3IoaW50IGs9MTtrPExPRztrKyspIHVwW2tdW3VdPSB1cFtrLTFdW3VdPyB1cFtrLTFdWyB1cFtrLTFdW3VdIF06MDsKICAgICAgICBmb3IoaW50IHY6IGdbdV0pIGlmKHYhPXApIGRmczEodix1KTsKICAgIH07CiAgICBkZnMxKDEsMCk7CiAgICBhdXRvIGxjYSA9IFsmXShpbnQgdSxpbnQgdil7CiAgICAgICAgaWYoZGVwdGhbdV08ZGVwdGhbdl0pIHN3YXAodSx2KTsKICAgICAgICBpbnQgZD1kZXB0aFt1XS1kZXB0aFt2XTsKICAgICAgICBmb3IoaW50IGs9MDtrPExPRztrKyspIGlmKGQ+PmsmMSkgdT11cFtrXVt1XTsKICAgICAgICBpZih1PT12KSByZXR1cm4gdTsKICAgICAgICBmb3IoaW50IGs9TE9HLTE7az49MDtrLS0pIGlmKHVwW2tdW3VdIT11cFtrXVt2XSl7IHU9dXBba11bdV07IHY9dXBba11bdl07IH0KICAgICAgICByZXR1cm4gdXBbMF1bdV07CiAgICB9OwogICAgc3RydWN0IEl0ZW17IGxvbmcgbG9uZyBuZWVkOyBpbnQgaWQsd2hpY2g7IH07CiAgICB2ZWN0b3I8dmVjdG9yPEl0ZW0+PiBhdChuKzEpOwogICAgdmVjdG9yPGxvbmcgbG9uZz4gbmVlZChxKSwgY2hrKHEpOwogICAgdmVjdG9yPGludD4gY3UocSksIGN2KHEpLCBjbChxKTsKICAgIHZlY3Rvcjxsb25nIGxvbmc+IGNvb3JkOwogICAgZm9yKGludCBpPTE7aTw9bjtpKyspIGNvb3JkLnB1c2hfYmFjayhmW2ldKTsKICAgIHZlY3RvcjxwYWlyPGludCxpbnQ+PiBxcyhxKTsKICAgIGZvcihpbnQgaT0wO2k8cTtpKyspewogICAgICAgIGludCB1LHY7IGNpbj4+dT4+djsgcXNbaV09e3Usdn07CiAgICAgICAgaW50IEw9bGNhKHUsdik7CiAgICAgICAgbG9uZyBsb25nIG5kID0gZlt1XSAtIDJMTCpmW0xdOwogICAgICAgIG5lZWRbaV09bmQ7CiAgICAgICAgY2hrW2ldID0gKGZbTF0gPiBuZCk7CiAgICAgICAgYXRbdV0ucHVzaF9iYWNrKHtuZCxpLDB9KTsKICAgICAgICBhdFt2XS5wdXNoX2JhY2soe25kLGksMX0pOwogICAgICAgIGF0W0xdLnB1c2hfYmFjayh7bmQsaSwyfSk7CiAgICAgICAgY29vcmQucHVzaF9iYWNrKG5kKTsKICAgIH0KICAgIHNvcnQoY29vcmQuYmVnaW4oKSwgY29vcmQuZW5kKCkpOwogICAgY29vcmQuZXJhc2UodW5pcXVlKGNvb3JkLmJlZ2luKCksIGNvb3JkLmVuZCgpKSwgY29vcmQuZW5kKCkpOwogICAgYXV0byBpZHggPSBbJl0obG9uZyBsb25nIHgpeyByZXR1cm4gaW50KHVwcGVyX2JvdW5kKGNvb3JkLmJlZ2luKCksIGNvb3JkLmVuZCgpLCB4KSAtIGNvb3JkLmJlZ2luKCkpOyB9OwogICAgRmVud2ljayBiaXQoKGludCljb29yZC5zaXplKCkrMik7CiAgICBmdW5jdGlvbjx2b2lkKGludCxpbnQpPiBkZnMyID0gWyZdKGludCB1LGludCBwKXsKICAgICAgICBiaXQuYWRkKGlkeChmW3VdKSsxLDEpOwogICAgICAgIGZvcihhdXRvICZpdDogYXRbdV0pewogICAgICAgICAgICBpbnQgcG9zID0gaWR4KGl0Lm5lZWQpKzE7CiAgICAgICAgICAgIGludCBncmVhdGVyID0gYml0LnN1bVJhbmdlKHBvcysxLCBiaXQubik7CiAgICAgICAgICAgIGlmKGl0LndoaWNoPT0wKSBjdVtpdC5pZF09Z3JlYXRlcjsKICAgICAgICAgICAgZWxzZSBpZihpdC53aGljaD09MSkgY3ZbaXQuaWRdPWdyZWF0ZXI7CiAgICAgICAgICAgIGVsc2UgY2xbaXQuaWRdPWdyZWF0ZXI7CiAgICAgICAgfQogICAgICAgIGZvcihpbnQgdjogZ1t1XSkgaWYodiE9cCkgZGZzMih2LHUpOwogICAgICAgIGJpdC5hZGQoaWR4KGZbdV0pKzEsLTEpOwogICAgfTsKICAgIGRmczIoMSwwKTsKICAgIGZvcihpbnQgaT0wO2k8cTtpKyspewogICAgICAgIGxvbmcgbG9uZyBhbnMgPSAobG9uZyBsb25nKWN1W2ldICsgY3ZbaV0gLSAyTEwqY2xbaV0gKyBjaGtbaV07CiAgICAgICAgY291dDw8YW5zPDwiXG4iOwogICAgfQogICAgcmV0dXJuIDA7Cn0K