#include <bits/stdc++.h>
using namespace std;
const int MAXN = 100005;
int n;
vector<int> g[MAXN];
int init[MAXN], goal[MAXN];
int ans = 0;
vector<int> who;
void dfs(int v, int p, int cur, int next) {
  init[v] ^= cur;
  if (init[v] != goal[v]) {
    cur ^= 1;
    ans++;
    who.push_back(v);
  }
  for (int i = 0; i < (int)(g[v].size()); i++) {
    int u = g[v][i];
    if (u != p) {
      dfs(u, v, next, cur);
    }
  }
}
int main() {
  cin >> n;
  for (int i = 0; i < (int)(n - 1); i++) {
    int x, y;
    scanf("%d %d", &x, &y);
    --x, --y;
    g[x].push_back(y);
    g[y].push_back(x);
  }
  for (int i = 0; i < (int)(n); i++) scanf("%d", &init[i]);
  for (int i = 0; i < (int)(n); i++) scanf("%d", &goal[i]);
  dfs(0, -1, 0, 0);
  cout << ans << endl;
  for (int i = 0; i < (int)(who.size()); i++) {
    printf("%d\n", who[i] + 1);
  }
  return 0;
}
