using System;
using System.Collections.Generic;

namespace dfsdf
{
    class Program
    {
        public static int idealnaBanka(int [] zlato)
        {
            int index = 0;
            int min = 100000;
            int suma = 0;

            for (int i = 0; i < zlato.Length; i++)
            {
                suma = 0;
                for (int j = 0;j < zlato.Length; j++)
                {
                    suma = suma + Math.Abs(i - j) * zlato[j];
                }
                if(suma < min)
                {
                    min = suma;
                    index = i;
                }
            }

            return index ;
        }
        public static int[] pretvoriUNiz(int [,] banke,int N)
        {
            HashSet<int> h = new HashSet<int>();
            int[] niz = new int[N];
            int brojac = 0;

            for (int i = 0; i < banke.GetLength(0); i++)
            {
                for (int j = 0; j < banke.GetLength(1); j++)
                {
                    int c = banke[i, j];
                    if (h.Contains(c) == false)
                    {
                        if(brojac < N)
                            niz[brojac] = c;
                        h.Add(c);
                        brojac++;
                    }
                   
                }
            }

            return niz;
        }

        static void Main(string[] args)
        {
            int N = int.Parse(Console.ReadLine());


            int[,] banke = new int[N - 1, 2];
            int[] zlato = new int[N];

            for (int i = 0; i < N-1; i++)
            {
                var unosMatrice = Console.ReadLine();
                var vrednostMatrice = unosMatrice.Split(" ");
                for (int j = 0; j < 2; j++)
                {
                    banke[i, j] = int.Parse(vrednostMatrice[j]);
                }
            }

            var unosNiza = Console.ReadLine();
            var vrednostNIza = unosNiza.Split(" ");
            for (int j = 0; j < N; j++)
            {
                zlato[j] = int.Parse(vrednostNIza[j]);
            }

            int Q = int.Parse(Console.ReadLine());
            int[,] zahtevi = new int[Q, 2];


            for (int i = 0; i < Q ; i++)
            {
                var unosMatrice = Console.ReadLine();
                var vrednostMatrice = unosMatrice.Split(" ");
                for (int j = 0; j < 2; j++)
                {
                    zahtevi[i, j] = int.Parse(vrednostMatrice[j]);
                }
            }
            int[] niz = pretvoriUNiz(banke,N);

            int broj = idealnaBanka(zlato);


            Console.WriteLine(niz[broj]);


            for (int i = 0; i < Q; i++)
            {
                zlato[zahtevi[i, 1] - 1] = zlato[zahtevi[i, 1] - 1] + zahtevi[i, 0];

                broj = idealnaBanka(zlato);

                Console.WriteLine(niz[broj]);

            }
            Console.ReadLine();

        }
    }
}