/*
改进:这里的a[n - 1]和b[n - 1]可以不创建

设置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() {
    //读取数据n
    int n;
    scanf("%d\n", &n);
    
    //设置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++){
        int a, b;
        scanf("%d %d\n", &a, &b);
        in[b - 1] = 1;
        out[a - 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(in);
    free(out);
    return 0;
}