#include<bits/stdc++.h>
#define N 3005
using namespace std;
struct edge{
	int t,next;
}e[N*2];int ecnt,head[N];
void addedge(int f,int t){
	e[++ecnt]=(edge){t,head[f]};head[f]=ecnt;
	e[++ecnt]=(edge){f,head[t]};head[t]=ecnt;
}

int sta[N],n,val[N];

void DFS(int u,int fr){
	sta[u]=1;
	for(int i=head[u];i;i=e[i].next){
		if(e[i].t!=fr&&val[e[i].t]<val[u]){
			DFS(e[i].t,fr);
			if(sta[e[i].t]==1) sta[u]=2;
		}
	}
}

int main(){
	scanf("%d",&n);
	for(int i=1;i<=n;i++) scanf("%d",&val[i]);
	for(int i=1,f,t;i<n;i++) scanf("%d%d",&f,&t),addedge(f,t);
	for(int i=1;i<=n;i++){
		memset(sta,0,sizeof(sta));
		DFS(i,0);
		if(sta[i]==2) printf("%d ",i);
	}
	return 0;
}