#include <bits/stdc++.h>
int par[100010];
int typ[100010];
int deg[100010];
int N;
int mlen = 0, maxh = -1;
int dfs(int v) {
  if (v < 0 || deg[v] > 1) return 0;
  return 1 + dfs(par[v]);
}
void print(int v) {
  if (v < 0 || deg[v] > 1) return;
  print(par[v]);
  printf("%d ", v + 1);
}
int main() {
  int i, len;
  scanf("%d", &N);
  for (i = 0; i < N; i++) {
    scanf("%d", &typ[i]);
  }
  for (i = 0; i < N; i++) {
    scanf("%d", &par[i]);
    --par[i];
    ++deg[par[i]];
  }
  for (i = 0; i < N; i++) {
    if (!typ[i]) continue;
    len = dfs(i);
    if (len > mlen) {
      mlen = len;
      maxh = i;
    }
  }
  printf("%d\n", mlen);
  print(maxh);
  return 0;
}
