#include <bits/stdc++.h>
using namespace std;
//
const int maxn = 1e5 + 5;
const int S = 320;
//
int n, q, a[maxn], p[maxn];
int depth[maxn], cnt[maxn], orz[maxn];
vector<int> adj[maxn];
long long val[maxn][S];
//
void DFS (int u = 1, int d = 0)
{
depth[u] = d;
orz[u] = cnt[d]++;
for (int v : adj[u])
DFS(v, d + 1);
}
long long query (int x, int y)
{
if (x == 0 && y == 0)
return 0;
if (cnt[depth[x]] < S && val[x][orz[y]] != 0)
return val[x][orz[y]];
//
long long res = query(p[x], p[y]) + 1LL * a[x] * a[y];
//
if (cnt[depth[y]] < S)
val[x][orz[y]] = val[y][orz[x]] = res;
return res;
}
//
void process (void)
{
cin >> n >> q;
for (int i = 1; i <= n; ++i)
cin >> a[i];
for (int i = 2; i <= n; ++i)
cin >> p[i],
adj[p[i]].emplace_back(i);
DFS();
for (int x, y; q--; cout << '\n')
cin >> x >> y,
cout << query(x, y);
}
//
signed main (void)
{
ios_base::sync_with_stdio(false), cin.tie(nullptr), cout.tie(nullptr);
process();
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7Ci8vCmNvbnN0IGludCBtYXhuID0gMWU1ICsgNTsKY29uc3QgaW50IFMgPSAzMjA7Ci8vCmludCBuLCBxLCBhW21heG5dLCBwW21heG5dOwppbnQgZGVwdGhbbWF4bl0sIGNudFttYXhuXSwgb3J6W21heG5dOwp2ZWN0b3I8aW50PiBhZGpbbWF4bl07CmxvbmcgbG9uZyB2YWxbbWF4bl1bU107Ci8vCnZvaWQgREZTIChpbnQgdSA9IDEsIGludCBkID0gMCkKewogICAgZGVwdGhbdV0gPSBkOwogICAgb3J6W3VdID0gY250W2RdKys7CiAgICBmb3IgKGludCB2IDogYWRqW3VdKQogICAgICAgIERGUyh2LCBkICsgMSk7Cn0KbG9uZyBsb25nIHF1ZXJ5IChpbnQgeCwgaW50IHkpCnsKICAgIGlmICh4ID09IDAgJiYgeSA9PSAwKQogICAgICAgIHJldHVybiAwOwogICAgaWYgKGNudFtkZXB0aFt4XV0gPCBTICYmIHZhbFt4XVtvcnpbeV1dICE9IDApCiAgICAgICAgcmV0dXJuIHZhbFt4XVtvcnpbeV1dOwogICAgLy8KICAgIGxvbmcgbG9uZyByZXMgPSBxdWVyeShwW3hdLCBwW3ldKSArIDFMTCAqIGFbeF0gKiBhW3ldOwogICAgLy8KICAgIGlmIChjbnRbZGVwdGhbeV1dIDwgUykKICAgICAgICB2YWxbeF1bb3J6W3ldXSA9IHZhbFt5XVtvcnpbeF1dID0gcmVzOwogICAgcmV0dXJuIHJlczsKfQovLwp2b2lkIHByb2Nlc3MgKHZvaWQpCnsKICAgIGNpbiA+PiBuID4+IHE7CiAgICBmb3IgKGludCBpID0gMTsgaSA8PSBuOyArK2kpCiAgICAgICAgY2luID4+IGFbaV07CiAgICBmb3IgKGludCBpID0gMjsgaSA8PSBuOyArK2kpCiAgICAgICAgY2luID4+IHBbaV0sCiAgICAgICAgYWRqW3BbaV1dLmVtcGxhY2VfYmFjayhpKTsKCiAgICBERlMoKTsKCiAgICBmb3IgKGludCB4LCB5OyBxLS07IGNvdXQgPDwgJ1xuJykKICAgICAgICBjaW4gPj4geCA+PiB5LAogICAgICAgIGNvdXQgPDwgcXVlcnkoeCwgeSk7Cn0KLy8Kc2lnbmVkIG1haW4gKHZvaWQpCnsKICAgIGlvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW8oZmFsc2UpLCBjaW4udGllKG51bGxwdHIpLCBjb3V0LnRpZShudWxscHRyKTsKICAgIHByb2Nlc3MoKTsKfQ==