using System;

namespace ConsoleApp5
{
    class Program
    {
        struct Povezanost
        {
            public int x;
            public int y;
        }
        static int OptimalnaBanka(Povezanost[] veze, int[] zlatnici)
        {
            int indeksNajoptimalnije = -1, najoptimalnije=int.MaxValue;
            for(int b = 0; b < zlatnici.Length; b++)
            {
                int cena=0;
                int[] z = new int[zlatnici.Length];
                for(int x = 0; x < zlatnici.Length; x++)
                {
                    z[x] = zlatnici[x];
                }
                if (cena < najoptimalnije) { najoptimalnije = cena;indeksNajoptimalnije = b + 1; }
            }
            return indeksNajoptimalnije;
        }
        static void Main(string[] args)
        {
            int n = int.Parse(Console.ReadLine());
            Povezanost[] veze = new Povezanost[n - 1];
            string[] s;
            for(int i = 0; i < n - 1; i++)
            {
                s = Console.ReadLine().Split();
                veze[i].x = int.Parse(s[0]);
                veze[i].y = int.Parse(s[1]);
            }
            s = Console.ReadLine().Split();
            int[] zlatnici = new int[n];
            for (int i = 0; i < n; i++)
                zlatnici[i] = int.Parse(s[i]);
            int q = int.Parse(Console.ReadLine());
            int[] dodatniZlatnici = new int[q];
            int[] dodatniBanka = new int[q];
            for(int i = 0; i < q; i++)
            {
                s = Console.ReadLine().Split();
                dodatniZlatnici[i] = int.Parse(s[0]);
                dodatniBanka[i] = int.Parse(s[1]);
            }
            Console.WriteLine(OptimalnaBanka(veze, zlatnici));
            for(int i = 0; i < q; i++)
            {
                zlatnici[dodatniBanka[i] - 1] += dodatniZlatnici[i];
                Console.WriteLine(OptimalnaBanka(veze, zlatnici));
            }

        }
    }
}