#include <iostream>
using namespace std;
 
int PrintMinOptIndeks(int brojBanaka, int* vrednosti, int** graf)
{
    int minVrednost = -1;
    int minOptIndeks = -1;
 
    for (int i = 0; i < brojBanaka; i++)
    {
        int pom = 0;
        for (int j = 0; j < brojBanaka; j++)
        {
            pom += vrednosti[j] * graf[i][j];
        }
 
        if (minVrednost < 0 || minVrednost > pom)
        {
            minVrednost = pom;
            minOptIndeks = i;
        }
    }
 
    return minOptIndeks + 1;
}
 
int main()
{
    int brojBanaka = 0;
 
    cin >> brojBanaka;
 
    int** graf;
    
    graf = new int* [brojBanaka];
 
    for (int i = 0; i < brojBanaka; i++)
    {
        graf[i] = new int[brojBanaka];
    }
    for (int i = 0; i <brojBanaka; i++)
        for (int j = 0; j < brojBanaka; j++)
        {
            if (i == j)
                graf[i][j] = 0;
            else
                graf[i][j] = 2 * brojBanaka; //INF
        }
 
    //for (int i = 0; i < brojBanaka; i++)
    //{
    //    for (int j = 0; j < brojBanaka; j++)
    //    {
    //        cout << graf[i][j] << " ";
    //    }
    //    cout << endl;
    //}
 
    for (int k = 0; k < brojBanaka - 1; k++)
    {
        int start, end;
        cin >> start >> end;
 
        graf[start - 1][end - 1] = 1;
        graf[end - 1][start - 1] = 1;
 
        //for (int i = 0; i < brojBanaka; i++)
        //{
        //    for (int j = 0; j < brojBanaka; j++)
        //    {
        //        cout << graf[i][j] << " ";
        //    }
        //    cout << endl;
        //}
    }
 
    //cout << endl;
 
    for (int k = 0; k < brojBanaka; k++) 
    {        
        for (int i = 0; i < brojBanaka; i++) 
        {            
            for (int j = 0; j < brojBanaka; j++) 
            {                
                if (graf[i][k] + graf[k][j] < graf[i][j])
                    graf[i][j] = graf[i][k] + graf[k][j];
            }
        }
    }
 
    //for (int i = 0; i < brojBanaka; i++)
    //{
    //    for (int j = 0; j < brojBanaka; j++)
    //    {
    //        cout << graf[i][j] << " ";
    //    }
    //    cout << endl;
    //}
 
    int* vrednosti;
 
    vrednosti = new int[brojBanaka];
 
    for (int i = 0; i < brojBanaka; i++)
    {
        cin >> vrednosti[i];
    }
 
    //for (int j = 0; j < brojBanaka; j++)
    //{
    //    cout << vrednosti[j] << " ";
    //}
 
    //cout << endl;
    
    int Q;
 
    cin >> Q
;
 
    int* output = new int[Q + 1];
 
    output[0] = PrintMinOptIndeks(brojBanaka, vrednosti, graf);
 
    for (int i = 0; i < Q; i++)
    {
        int dodatnaVrednost, banka;
 
        cin >> dodatnaVrednost >> banka;
 
        vrednosti[banka - 1] += dodatnaVrednost;
 
        output[i+1] = PrintMinOptIndeks(brojBanaka, vrednosti, graf);
    }
 
    for (int i = 0; i < Q + 1; i++)
        cout << output[i]<<endl;
 
	return 0;
}