void mktx()
{
    int n;
    cin>>n;
    vector<int>l(n+1,0),r(n+1,0),d(n+1,0);
    for(int i=0;i<n-1;i++)
    {
        int a,b;
        cin>>a>>b;
        if(!l[a]) l[a]=b;
        else r[a]=b;
        d[b]++;
    }
    int root=0;
    for(int i=1;i<=n;i++)
    {
        if(l[i]&&r[i])
        {
            if(l[i]>r[i]) swap(l[i],r[i]);
        }
        else
        {
            if(l[i]&&l[i]<i) swap(l[i],r[i]);
        }
        if(!d[i]) root=i;
    }
    auto pre=[&](auto &&self,int x)->void
    {
        if(!x) return;
        cout<<x<<" ";
        self(self,l[x]);
        self(self,r[x]);
    };
    auto mid=[&](auto &&self,int x)->void
    {
        if(!x) return;
        self(self,l[x]);
        cout<<x<<" ";
        self(self,r[x]);
    };
    auto nxt=[&](auto &&self,int x)->void
    {
        if(!x) return;
        self(self,l[x]);
        self(self,r[x]);
        cout<<x<<" ";
    };
    pre(pre,root);
    cout<<'\n';
    mid(mid,root);
    cout<<'\n';
    nxt(nxt,root);
}