#include <bits/stdc++.h>
#define MAXN 1002
#define INF 1000000003
using namespace std;

int G[MAXN][MAXN],N,M,Q;
long long P[MAXN][MAXN];

int main()
{
   ios_base::sync_with_stdio(false);
   cin.tie(0);
   cout.tie(0);
   int i,j,k,u,v,c;
   cin>> N;
   for(i=0;i<N;i++)
   {  for(j=0;j<N;j++) {G[i][j]=INF;
   }
      G[i][i]=0;
   }
   for(i=0;i<N-1;i++)
   {  cin >> u >> v;
   u--; v--;
      G[u][v]=G[v][u]=1;
   }
   for(k=0;k<N;k++)
      for(i=0;i<N;i++)
         for(j=0;j<N;j++)
           if(G[i][k]+G[k][j]<G[i][j])
           {  G[i][j]=G[i][k]+G[k][j];
           }


vector<int> zlatnici(N);
    for(int Z=0; Z<N; Z++)cin >> zlatnici[Z];
    int doprinos=0,mini=INF,minCentar=0;
    for(int Z=0; Z<N; Z++){
        doprinos=0;
        for(int X=0; X<N; X++){
            if(X!=Z){
                doprinos+=zlatnici[X]*G[X][Z];
            }
        }
        if(doprinos<mini){
                    minCentar=Z;
                    mini=doprinos;}

    }
    cout << minCentar+1 << endl;
   cin >> Q;
   for(i=0;i<Q;i++)
   {  cin >> u >> v;
   v--;
   zlatnici[v]+=u;
   mini=INF;
   minCentar=0;
   for(int Z=0; Z<N; Z++){
        doprinos=0;
        for(int X=0; X<N; X++){
            if(X!=Z){
                doprinos+=zlatnici[X]*G[X][Z];
            }
        }
        if(doprinos<mini){
                    minCentar=Z;
                    mini=doprinos;}
   }
        cout << minCentar+1 << endl;
   }
   return 0;
}