#include <bits/stdc++.h>


using namespace std;


const int MAXN = 3000 + 23;









int n, a[MAXN];
vector<int> g[MAXN];
bitset<MAXN> mark;

void inp();
void dfs(int, int = -1);

int main() {
    inp();
    for (int i = 0; i < n; i++) {
        mark.reset();
        dfs(i);
        if (mark[i])
            cout << i + 1 << ' ';
    }
    return 0;
}
void inp() {
    cin >> n;
    for (int i = 0; i < n; i++) cin >> a[i];
    for (int i = 1; i < n; i++) {
        int u, v;
        cin >> u >> v;
        g[--u].push_back(--v), g[v].push_back(u);
    }
}
void dfs(int v, int p) {
    for (auto u : g[v]) if (u != p) dfs(u, v);
    for (auto u : g[v]) if (!mark[u] && a[v] > a[u]) mark[v] = true;
}