#include<iostream.h>
#include<conio.h>

int d[2000][2], N, broi[2000][2], index2=0, index=0, koren=0, error=0;
int vazli[2000];
int vazel2(int a) {
    int check_a=0;
    for (int i=0;i<index2;i++) {
        if(a==vazli[i]) check_a=1;
    }
    if (check_a==0) {vazli[index2]=a;index2++;}
    return 0;
}
int pat(int a) {
    vazel2(a);
    for (int i=0;i<N;i++) {
        if (a==d[i][0]) pat(d[i][1]);
    }
    return 0;
}
int vazel(int a,int b) {
    int check_a=0,check_b=0;
    for (int i=0;i<index;i++) {
        if(a==broi[i][0]) check_a=1;
        if(b==broi[i][0]) {
                          check_b=1;
                          if (broi[i][1]==-1) broi[i][1]=1;
                          else broi[i][1]=broi[i][1]+1;
        }
    }
    if (a!=b) {
       if (check_a==0) {broi[index][0]=a;broi[index][1]=-1;index++;}
       if (check_b==0) {broi[index][0]=b;broi[index][1]=1;index++;}
    } else if (check_a==0) {broi[index][0]=a;broi[index][1]=1;index++;}
    return 0;
}
int main() {
    clrscr();
    cin >> N;
    while (N<0||N>2000) {
          cout << "N e ot intervala (0; 2000]!\n";
          cin >> N;
    }
    for(int i=0;i<N;i++) {
            cin >> d[i][0] >> d[i][1];
            while(d[i][0]<0 || d[i][1]<0 || d[i][0]>2000 || d[i][1] >2000) {
                            cout << "Vazlite trqbva da sa polojitelni 4isla, ne po-golemi ot 2000!\n";
                            cin >> d[i][0] >> d[i][1];
            }
    }
    for(i=0;i<N;i++) {
            vazel(d[i][0], d[i][1]);
    }
    for(i=0;i<index;i++) {
            if (broi[i][1]==-1) {
               if (koren==0) koren=broi[i][0]; else koren=-1;
            }
            if (broi[i][1]!=1 && broi[i][1]!=-1) error=1;
    }
    if (koren!=-1&&error!=1&&koren!=0) {
       pat(koren);
       if (index2==index) cout << index << ' ' << koren;
       else cout << "0 0";
    }
    else cout << "0 0";
    getch();
    return 0;
}