#include <bits/stdc++.h>
using namespace std;
int son[1000005],z[1000005],cnt[1000005],sum[1000005],id[1000005],res,vis[1000005];
vector <int> mp[1000005];
void dfs(int u,int fa)
{
if(z[u]==0)
son[u]=son[fa]-1;
else
son[u]=z[u];
for(int i=0;i<mp[u].size();i++)
{
int v=mp[u][i];
if(v==fa)
continue;
dfs(v,u);
}
}
signed main()
{
ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
int n,s;
cin>>n;
for(int i=1;i<=n;i++)
{
int v;
cin>>v>>z[i];
vis[z[i]]=1;
if(z[i])
res++;
if(v==i)
{
s=i;
}
else
{
mp[i].push_back(v);
mp[v].push_back(i);
}
}
z[s]=n;
vis[n]=1;
dfs(s,0);
for(int i=1;i<=n;i++)
{
cnt[son[i]]++;
id[son[i]]=i;
}
for(int i=1;i<=n;i++)
{
sum[i]=sum[i-1]+cnt[i];
if(sum[i]==i && sum[i-1]==i-1 && vis[i]==0)
{
if(!z[id[i]])
{
res++;
}
vis[i]=1;
z[id[i]]=i;
}
}
if(res==n-1)
{
int x;
for(int i=1;i<=n;i++)
if(vis[i]==0)
{
x=i;
continue;
}
for(int i=1;i<=n;i++)
{
if(z[i]==0)
z[i]=x;
}
}
for(int i=1;i<=n;i++)
cout<<z[i]<<"\n";
}
