#include <stdio.h>
#define HASH_SIZE 10007 //定义哈希表长度
#define N 1000 //定义数组长度
#define EMPTY 10007
//哈希表
int hash(int x){
return (x%HASH_SIZE+HASH_SIZE)%HASH_SIZE;
}
//哈希表插入
void insert(int hashTable[],int x){
int index=hash(x);//寻找位置
while(hashTable[index]!=EMPTY){//找到的位置不空
if(hashTable[index]==x) return;//先判断是否已插入过
index=(index+1)%HASH_SIZE;//找下一个位置
}
hashTable[index]=x;//找到一个位置插入
}
//哈希表查找
int find(int hashTable[],int x){
int index=hash(x);//寻找位置
while(hashTable[index]!=EMPTY){//找到的位置不空
if(hashTable[index]==x) return 1;//找到了
index=(index+1)%HASH_SIZE;//没找到,找下一个位置
}
return 0;//遍历完整个表都没找到
}
int main(){
int n;
scanf("%d",&n);
int a[n];
int seta[HASH_SIZE];
int count[HASH_SIZE];
// **初始化哈希表**
for (int i = 0; i < HASH_SIZE; i++) {
seta[i] = EMPTY; // 所有位置设为 EMPTY
count[i] = 0; // 初始化计数
}
//输入数组a,并将数组a的元素插入哈希表
for(int i=0;i<n;i++){
scanf("%d",&a[i]);
insert(seta,a[i]);
}
//统计次数
int max=0,num;
for(int i=0;i<n;i++){
if(find(seta,a[i])==1){
count[hash(a[i])]++;
if(max<count[hash(a[i])]){
max=count[hash(a[i])];
num=a[i];
}
}
}
printf("%d %d",num,max);
return 0;
}