#include <bits/stdc++.h>
using namespace std;
const int MAXN = 100 * 1000 + 23;
int n, t[MAXN], p[MAXN], od[MAXN];
queue<int> q;
pair<int, int> dp[MAXN], ans;
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(nullptr), cout.tie(nullptr);
  cin >> n;
  for (int i = 0; i < n; i++) cin >> t[i];
  for (int i = 0; i < n; i++) cin >> p[i], p[i]--, od[p[i]]++;
  for (int i = 0; i < n; i++)
    if (t[i]) q.push(i);
  while (!q.empty()) {
    if (~p[q.front()] && od[p[q.front()]] == 1) {
      dp[p[q.front()]] =
          max(dp[p[q.front()]], {dp[q.front()].first + 1, q.front() + 1});
      q.push(p[q.front()]);
    }
    q.pop();
  }
  int f = -1;
  for (int i = 0; i < n; i++) {
    if ((t[i] == 1 || dp[i].second) && ans.first <= dp[i].first) {
      ans = dp[i];
      f = i + 1;
    }
  }
  cout << ans.first + 1 << '\n' << f << ' ';
  while (ans.second) {
    cout << ans.second << ' ';
    ans = dp[ans.second - 1];
  }
  return 0;
}
