/*
ZADATAK: balegovi
JEZIK: C++
*/

#include <stdio.h>

FILE *fin, *fout;

long int n;

long int b1[100001], b2[1000001];

long int br[100001];

long int sr[100001];

long int manji[1000001];

long int brM, brI;

long int i, j;

int main()
{   
    fin = fopen("balegovi.in", "r");
    
    fout = fopen("balegovi.out", "w");
    
    fscanf(fin, "%ld\n", &n);
    
    long int t1, t2;
    
    for(i = 1; i <= n; i++)
    {
       br[i] = 0;     
    }
    
    for(i = 1; i <= n; i++)
    {
       fscanf(fin, "%ld %ld\n", &t1, &t2);
       
       br[t1]++;
       
       br[t2]++;
       
       b1[i] = t1;
       
       b2[i] = t2;       
       
       if(t1 == i)
       {
          fprintf(fout, "1\n%ld\n", t2);  
          
          return 0;    
       }
       
       if(t2 == i)
       {
          fprintf(fout, "1\n%ld\n", t1);   
          
          return 0;   
       }
    }
    
    brM = 0;
    
    bool kraj = true;
    
    for(i = 1; i <= n; i++)
    {
       if(br[i] == 0)
       {
          brM++;
         
          manji[brM] = i;
         
          kraj = false;   
       }
    }
    
    if(kraj)
    {
       fprintf(fout, "%ld\n", n);     
            
       for(i = n; i > 0; i--)
       {
          for(j = 1; j < br[i]; j++)
          
            fprintf(fout, "%ld ", i);    
       }         
    }
    else
    {
       brM = 0; 
        
       for(i = 1; i <= n; i++)
       {     
          if(br[i] > 0)
          {
             sr[b1[i]]++;
             
             sr[b2[i]]++;         
             
             sr[i]--;
          }
          else
          
             sr[i] = 0;      
       }
       
       for(i = 1; i <= n; i++)
          
          if(sr[i] < 0)
          {
             brM++;
             
             manji[brM] = i;         
          }
          
       while(brM > 0 && brM < n)
       {
          for(i = 1; i <= brM; i++)
          {
             sr[b1[i]] += sr[manji[i]];
             
             sr[b2[i]] += sr[manji[i]];
             
             sr[manji[i]] = 0;       
          } 
          
          brM = 0;
          
          for(i = 1; i <= n; i++)
          
             if(sr[i] < 0)
             {
                brM++;
             
                manji[brM] = i;         
             }         
       }
       
       if(brM == 0)
       {
           for(i = n; i > 0; i--)
           
              for(j = 1; j < sr[i]; j++)
              
                 brI++;   
              
           fprintf(fout, "%ld\n", brI);   
           
           for(i = n; i > 0; i--)
           {
              for(j = 1; j < sr[i]; j++)
          
                 fprintf(fout, "%ld ", i);    
           }   
       }
       else
       {
           for(i = n; i > 0; i--)
           
              for(j = 1; j < sr[i] * (-1); j++)
           
                 brI++;
                 
           fprintf(fout, "%ld\n", brI);
           
           for(i = n; i > 0; i--)
           {
              for(j = 1; j < sr[i] * (-1); j++)
          
                 fprintf(fout, "%ld ", i);    
           }
       }
    }
    
    return 0;    
}
