/*
设置a[n - 1]和b[n - 1]数组存储ai,bi
基本想法,设置in[n]和out[n]数组记录每个顶点是否有入度以及是否有出度,遍历a[n - 1]和b[n - 1]为in\out数组赋值,再扫描检测一遍in\out数组得出结果
*/


#include <stdio.h>
#include <stdlib.h>

int main() {
    //读取数据
    int n;
    scanf("%d\n", &n);
    int *a = (int *)malloc(sizeof(int) * (n - 1));
    int *b = (int *)malloc(sizeof(int) * (n - 1));
    for(int i = 0; i < n - 1; i++){
        scanf("%d %d\n", a + i, b + i);
    }
    
    //设置in\out数组并初始化
    int *in = (int *)malloc(sizeof(int) * n);
    int *out = (int *)malloc(sizeof(int) * n);
    for(int i = 0; i < n; i++){
        in[i] = 0;
        out[i] = 0;
    }
    
    //遍历a,b数组为in\out赋值
    for(int i = 0; i < n - 1; i++){
        in[b[i] - 1] = 1;
        out[a[i] - 1] = 1;
    }
    
    //扫描in\out数组,输出结果
    for(int i = 0; i < n; i++){
        if(in[i] == 0){
            printf("%d\n", i + 1);
            break;
        }
    }

    for(int i = 0; i < n; i++){
        if(out[i] == 0){
            printf("%d ", i + 1);
        }
    }
    
    printf("\n");
    //释放空间
    free(a);
    free(b);
    free(in);
    free(out);
    return 0;
}