#include<stdio.h>
/*借助结构数组保存输入的数和出现的次数*/
struct data{
int x; //储存输入的数字
int y; //记录出现的次数
};
int main(void){
int n,index,i,j,temp,count=1;
scanf("%d",&n);
struct data datas[n];
scanf("%d",&datas[0].x); //输入第一个数
datas[0].y=1; //记录第一个数出现一次
for(i=1;i<n;i++){
scanf("%d",&temp); //利用temp输入下一个数据
for(j=0;j<count;j++){
if(temp==datas[j].x) //检查该数据是否出现过
datas[j].y++; //若出现过,第一次出现的数组元素的y加一
}
if(j>=i){ //若没出现过,计入结构数组
datas[i].x=temp;
datas[i].y=1;
count++; //当前计入的未重复数据的个数
}
}
index=0;
for(i=1;i<n;i++){ //遍历结构数组,寻找出现次数最多的整数和出现的次数
if(datas[i].y>datas[index].y)
index=i;
}
printf("%d %d\n",datas[index].x,datas[index].y);
return 0;
}