#include<stdio.h>
int svj(long long int n,long long int x[]){
	for(long long int i=0;i<n-1;i++){
		if(x[i]!=x[i+1])return 1;
	}
	return 0;
}
int main(){
	long long int n,q;
	scanf("%lld",&n);
	long long int b1[n-1],b2[n-1];
	for(long long int i=0;i<n-1;i++){
		scanf("%lld %lld",&b1[i],&b2[i]);
	}
	long long int mon[n];
	for(long long int i=0;i<n;i++){
		scanf("%lld",&mon[i]);
	}
	scanf("%lld",&q);
	long long int don[q],u[q];
	for(long long int i=0;i<q;i++){
		scanf("%lld %lld",&don[i],u[i]);
	}
	long long int res[q+1];
	if(svj(n,mon)==0){
		long long int pom=0,cif[n*2];
		for(long long int i=0;i<n;i++){
			cif[pom]=0;
			for(long long int j=0;j<n;j++){
				if(j!=i&&b1[j]==pom)cif[pom]++;
				if(j!=i&&b2[j]==pom)cif[pom]++;
			}
			pom++;
	}
		long long int max=0,poz;
		for(long long int i=0;i<pom;i++){
			if(cif[i]!=NULL&&cif[i]>max){
				max=cif[i];
				poz=i;
			}
	}
		res[0]=poz;
	}
	else{
		long long int s=0;
		for(long long int i=0;i<n;i++){
		s+=mon[i];
	}
		for(long long int i=0;i<n;i++){
		if(s-mon[i]*2<mon[i]){
				res[0]=i+1;
			}
	}
	}
	for(long long int i=0;i<q+1;i++){
		printf("%lld",res[i]);
		
	}
}