#include <bits/stdc++.h>
using namespace std;
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
int n;
if (!(cin >> n)) return 0;
vector<int> col(n+1); // true = black, false = pink
for (int i = 1; i <= n; ++i) {
int x; cin >> x;
col[i] = (x == 1);
}
vector<vector<int>> g(n+1);
for (int i = 0; i < n-1; ++i) {
int a,b; cin >> a >> b;
g[a].push_back(b);
g[b].push_back(a);
}
vector<int> parent(n+1, 0);
vector<int> ans;
ans.reserve(3*n);
// iterative DFS using stack of (node, next_child_index)
vector<pair<int,int>> st;
st.emplace_back(1, 0);
ans.push_back(1);
col[1] = !col[1]; // visited node 1 at start -> flip
while (!st.empty()) {
int v = st.back().first;
int &idx = st.back().second;
if (idx < (int)g[v].size()) {
int u = g[v][idx++];
if (u == parent[v]) continue;
parent[u] = v;
// go to child u
ans.push_back(u);
col[u] = !col[u];
st.emplace_back(u, 0);
} else {
// finished all children of v, go back to parent (if any)
st.pop_back();
if (parent[v] != 0) {
int p = parent[v];
ans.push_back(p); // move to parent
col[p] = !col[p];
// if child v is still pink, we need to revisit it and return again
if (!col[v]) {
ans.push_back(v); // go to child again
col[v] = !col[v];
ans.push_back(p); // return to parent
col[p] = !col[p];
}
}
}
}
// special fix if root ended pink -> use any child of root
if (!col[1]) {
if (!g[1].empty()) {
int c = g[1][0];
ans.push_back(c); col[c] = !col[c];
ans.push_back(1); col[1] = !col[1];
ans.push_back(c); col[c] = !col[c];
}
// if root has no child (n==1), but it's pink -> impossible by problem statement constraints (solution guaranteed)
}
// output sequence
for (size_t i = 0; i < ans.size(); ++i) {
if (i) cout << ' ';
cout << ans[i];
}
cout << '\n';
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgppbnQgbWFpbigpIHsKICAgIGlvczo6c3luY193aXRoX3N0ZGlvKGZhbHNlKTsKICAgIGNpbi50aWUobnVsbHB0cik7CiAgICBpbnQgbjsKICAgIGlmICghKGNpbiA+PiBuKSkgcmV0dXJuIDA7CiAgICB2ZWN0b3I8aW50PiBjb2wobisxKTsgLy8gdHJ1ZSA9IGJsYWNrLCBmYWxzZSA9IHBpbmsKICAgIGZvciAoaW50IGkgPSAxOyBpIDw9IG47ICsraSkgewogICAgICAgIGludCB4OyBjaW4gPj4geDsKICAgICAgICBjb2xbaV0gPSAoeCA9PSAxKTsKICAgIH0KICAgIHZlY3Rvcjx2ZWN0b3I8aW50Pj4gZyhuKzEpOwogICAgZm9yIChpbnQgaSA9IDA7IGkgPCBuLTE7ICsraSkgewogICAgICAgIGludCBhLGI7IGNpbiA+PiBhID4+IGI7CiAgICAgICAgZ1thXS5wdXNoX2JhY2soYik7CiAgICAgICAgZ1tiXS5wdXNoX2JhY2soYSk7CiAgICB9CgogICAgdmVjdG9yPGludD4gcGFyZW50KG4rMSwgMCk7CiAgICB2ZWN0b3I8aW50PiBhbnM7CiAgICBhbnMucmVzZXJ2ZSgzKm4pOwoKICAgIC8vIGl0ZXJhdGl2ZSBERlMgdXNpbmcgc3RhY2sgb2YgKG5vZGUsIG5leHRfY2hpbGRfaW5kZXgpCiAgICB2ZWN0b3I8cGFpcjxpbnQsaW50Pj4gc3Q7CiAgICBzdC5lbXBsYWNlX2JhY2soMSwgMCk7CiAgICBhbnMucHVzaF9iYWNrKDEpOwogICAgY29sWzFdID0gIWNvbFsxXTsgLy8gdmlzaXRlZCBub2RlIDEgYXQgc3RhcnQgLT4gZmxpcAoKICAgIHdoaWxlICghc3QuZW1wdHkoKSkgewogICAgICAgIGludCB2ID0gc3QuYmFjaygpLmZpcnN0OwogICAgICAgIGludCAmaWR4ID0gc3QuYmFjaygpLnNlY29uZDsKCiAgICAgICAgaWYgKGlkeCA8IChpbnQpZ1t2XS5zaXplKCkpIHsKICAgICAgICAgICAgaW50IHUgPSBnW3ZdW2lkeCsrXTsKICAgICAgICAgICAgaWYgKHUgPT0gcGFyZW50W3ZdKSBjb250aW51ZTsKICAgICAgICAgICAgcGFyZW50W3VdID0gdjsKICAgICAgICAgICAgLy8gZ28gdG8gY2hpbGQgdQogICAgICAgICAgICBhbnMucHVzaF9iYWNrKHUpOwogICAgICAgICAgICBjb2xbdV0gPSAhY29sW3VdOwogICAgICAgICAgICBzdC5lbXBsYWNlX2JhY2sodSwgMCk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgLy8gZmluaXNoZWQgYWxsIGNoaWxkcmVuIG9mIHYsIGdvIGJhY2sgdG8gcGFyZW50IChpZiBhbnkpCiAgICAgICAgICAgIHN0LnBvcF9iYWNrKCk7CiAgICAgICAgICAgIGlmIChwYXJlbnRbdl0gIT0gMCkgewogICAgICAgICAgICAgICAgaW50IHAgPSBwYXJlbnRbdl07CiAgICAgICAgICAgICAgICBhbnMucHVzaF9iYWNrKHApOyAgICAgICAgICAgIC8vIG1vdmUgdG8gcGFyZW50CiAgICAgICAgICAgICAgICBjb2xbcF0gPSAhY29sW3BdOwogICAgICAgICAgICAgICAgLy8gaWYgY2hpbGQgdiBpcyBzdGlsbCBwaW5rLCB3ZSBuZWVkIHRvIHJldmlzaXQgaXQgYW5kIHJldHVybiBhZ2FpbgogICAgICAgICAgICAgICAgaWYgKCFjb2xbdl0pIHsKICAgICAgICAgICAgICAgICAgICBhbnMucHVzaF9iYWNrKHYpOyAgICAgICAgLy8gZ28gdG8gY2hpbGQgYWdhaW4KICAgICAgICAgICAgICAgICAgICBjb2xbdl0gPSAhY29sW3ZdOwogICAgICAgICAgICAgICAgICAgIGFucy5wdXNoX2JhY2socCk7ICAgICAgICAvLyByZXR1cm4gdG8gcGFyZW50CiAgICAgICAgICAgICAgICAgICAgY29sW3BdID0gIWNvbFtwXTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICAvLyBzcGVjaWFsIGZpeCBpZiByb290IGVuZGVkIHBpbmsgLT4gdXNlIGFueSBjaGlsZCBvZiByb290CiAgICBpZiAoIWNvbFsxXSkgewogICAgICAgIGlmICghZ1sxXS5lbXB0eSgpKSB7CiAgICAgICAgICAgIGludCBjID0gZ1sxXVswXTsKICAgICAgICAgICAgYW5zLnB1c2hfYmFjayhjKTsgY29sW2NdID0gIWNvbFtjXTsKICAgICAgICAgICAgYW5zLnB1c2hfYmFjaygxKTsgY29sWzFdID0gIWNvbFsxXTsKICAgICAgICAgICAgYW5zLnB1c2hfYmFjayhjKTsgY29sW2NdID0gIWNvbFtjXTsKICAgICAgICB9CiAgICAgICAgLy8gaWYgcm9vdCBoYXMgbm8gY2hpbGQgKG49PTEpLCBidXQgaXQncyBwaW5rIC0+IGltcG9zc2libGUgYnkgcHJvYmxlbSBzdGF0ZW1lbnQgY29uc3RyYWludHMgKHNvbHV0aW9uIGd1YXJhbnRlZWQpCiAgICB9CgogICAgLy8gb3V0cHV0IHNlcXVlbmNlCiAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGFucy5zaXplKCk7ICsraSkgewogICAgICAgIGlmIChpKSBjb3V0IDw8ICcgJzsKICAgICAgICBjb3V0IDw8IGFuc1tpXTsKICAgIH0KICAgIGNvdXQgPDwgJ1xuJzsKICAgIHJldHVybiAwOwp9Cg==