#include<iostream>
#include<algorithm>
#include<vector>
#include<functional>
using namespace std;
#define MX 100100
vector<vector<int>>a(MX);
int n;
int mdep=1;
vector<int>ans;
int root=0;
void dfs(int x,int dep){
if(dep>mdep){
mdep=dep;
ans.clear();
}
if(dep==mdep){
ans.push_back(x);
}
for(auto w:a[x]){
dfs(w,dep+1);
}
}
int main(){
cin>>n;
for(int i=0;i<n;i++){
int x;
cin>>x;
if(x==-1)
root=i;
else
a[x-1].push_back(i);
}
dfs(root,1);
cout<<mdep<<endl;
for(int i=0;i<ans.size();i++)
cout<<ans[i]+1<<" \n"[i==ans.size()-1];
}
04-22
171

05-13
1645

04-21
180

05-04
703
