#include <bits/stdc++.h>
using namespace std;
int a[100006];
vector<int> vec[100006];
void put(int kk) {
  a[kk] = -a[kk];
  cout << " " << kk + 1;
}
void dfs(int v, int k) {
  for (int i = 0; i < vec[v].size(); i++) {
    int u = vec[v][i];
    if (u == k) continue;
    put(u);
    dfs(u, v);
    put(v);
    if (a[u] == -1) {
      put(u);
      put(v);
    }
  }
  if (v == 0 && a[v] == -1) {
    int u = vec[v][0];
    put(u);
    put(v);
    put(u);
  }
}
int main() {
  int n;
  cin >> n;
  for (int i = 0; i < n; i++) {
    cin >> a[i];
  }
  int x, y;
  for (int i = 0; i < n - 1; i++) {
    cin >> x >> y;
    x--;
    y--;
    vec[x].push_back(y);
    vec[y].push_back(x);
  }
  cout << 1;
  dfs(0, -1);
  return 0;
}
