#include <bits/stdc++.h>
using namespace std;
#define ll long long
const int N=2*1e5+50;
const ll inf=1e18;
vector<int>E[N];
int parent[N],dp[N],a[N];
bool was[N];
int depth=-1,val=0;
void DFS(int u)
{
	was[u]=true;
	depth++;
	val+=a[u]*depth;
	for(auto i:E[u])
	{
		if(!was[i])
		{
			DFS(i);
		}
	}
	depth--;
}
/*void DFSsetup(int u)
{
	dp[u]=a[u];
	for(auto i:E[u])
	{
		if(i!=parent[u])
		{
			parent[i]=u;
			DFSsetup(i);
			dp[u]+=dp[i];
		}
	}
}
void DFS(int u)
{
	int mn=inf,idx;
	for(auto i:E[u])
	{
		if(i!=parent[u])
		{
			if(mn>dp[i])
			{
				idx=i;
				mn=dp[i];
			}
		}
	}
	DFS(i);
}*/
int main()
{
    int n,q;
    scanf("%i",&n);
	for(int i=1;i<n;i++)
	{
		int x,y;
		scanf("%i%i",&x,&y);
		E[x].push_back(y);
		E[y].push_back(x);
	}
	for(int i=1;i<=n;i++)
	{
		scanf("%i",&a[i]);
	}
	scanf("%i",&q);
	while(q--)
	{
		int z,b;
		scanf("%i%i",&z,&b);
	}
	ll mn=inf;
	int res;
	for(int i=1;i<=n;i++)
	{
		DFS(i);
		if(val<mn)
		{
			mn=val;
			res=i;
		}
		val=0;
		for(int j=1;j<=n;j++)
		{
			was[j]=false;
		}
	}
	printf("%i\n",res);
    return 0;
}