#include <bits/stdc++.h>
using namespace std;
int a[111111], b[111111], c[111111];
int n, tmax;
int tmp[111111], ans[111111];
int dfs(int u, int len) {
  tmp[len] = u;
  int v = b[u];
  if (v && c[v] == 1 && !a[v]) return dfs(v, len + 1);
  return len;
}
int main() {
  scanf("%d", &n);
  for (int i = 1; i <= n; i++) scanf("%d", &a[i]);
  for (int i = 1; i <= n; i++) {
    scanf("%d", &b[i]);
    c[b[i]]++;
  }
  for (int i = 1; i <= n; i++)
    if (a[i]) {
      int t = dfs(i, 1);
      if (t > tmax) {
        tmax = t;
        for (int i = 1; i <= t; i++) ans[i] = tmp[i];
      }
    }
  printf("%d\n", tmax);
  for (int i = tmax; i >= 1; i--) printf("%d ", ans[i]);
  return 0;
}
