#include<stdio.h>
int exist[2][2001];
int N,dukade,counterr;
int avaible_roots[2001];
int vliza6ti[2001];
int flag;
int temp;
int cnt;

int main(){
int a1,b1,i;
scanf("%d",&N);
for(i=1;i<=N;i++){
scanf("%d %d",&a1,&b1);
exist[0][a1]=1;
exist[0][b1]=1;
if(a1>dukade)dukade=a1;
if(b1>dukade)dukade=b1;
vliza6ti[b1]++;

}
for(i=1;i<=dukade;i++){
   if(vliza6ti[i]>1)flag=1;
   if(flag==1)break;
   if(vliza6ti[i]==0 && exist[0][i]==1)avaible_roots[counterr++]=i;
}
if(counterr>=2)flag=1;
for(i=1;i<=dukade;i++)if(exist[0][i]==1)cnt++;
(flag==1)?printf("0 0\n"):printf("%d %d\n",cnt,avaible_roots[0]);
return 0;
}
