Go: package main

import (
	"bufio"
	"fmt"
	"os"
	"sort"
	"strconv"
)

var scanner = bufio.NewScanner(os.Stdin)

func nextString() string {
	scanner.Scan()
	return scanner.Text()
}

func nextInt() (int, error) {
	return strconv.Atoi(nextString())
}

type Pair struct {
	key   int
	value int
}

func main() {
	scanner.Split(bufio.ScanWords)

	counts := map[int]int{}
	for {
		n, err := nextInt()
		if err != nil {
			break
		}

		counts[n]++
	}

	pairs := []Pair{}
	for k, v := range counts {
		pairs = append(pairs, Pair{k, v})
	}
	sort.Slice(pairs, func(i, j int) bool {
		if pairs[i].value == pairs[j].value {
			return pairs[i].key < pairs[j].key
		}
		return pairs[i].value > pairs[j].value
	})

	vMax := 0
	for _, pair := range pairs {
		if vMax != 0 && vMax != pair.value {
			break
		}
		if pair.value > vMax {
			vMax = pair.value
		}
		fmt.Println(pair.key)
	}
}

C++: #include<iostream>
using namespace std;
int main(){
  int i,m=0;
  int d[100]={};
  while(cin >> i) d[i-1]++;
  for(i=0;i<100;i++) m=max(m,d[i]);
  for(i=0;i<100;i++) if(d[i]==m) cout << (i+1) << endl; 
}

C++: #include <iostream>
#include <vector>
using namespace std;

int main() {
	int n, mode=0;
	vector<int> numbers(101, 0);
	while (cin >> n) {
        numbers[n]++;
        if (numbers[n] > mode) { mode=numbers[n]; }
	}
    for (int i = 0; i != numbers.size(); ++i) {
        if (numbers[i] == mode) { cout << i << endl; }
    }
    return 0;
}

C++: #include <stdio.h>
int main(){
char ch;
int num,max;
int p[10]={0};
int q[2][10]={0};
while(1)
{
	scanf("%c",&ch);
		if(ch=='\0')break;
num=ch-'0';
p[num]++;
}
max=0;
for(int i=0;i<10;i++){
if(max<p[i])max=p[i];
}
for(int i=0;i<10;i++){
if(max==p[i])printf("%d\n",i);
}

return 0;
}

C++: #include <iostream>
#include <vector>
#include <stdio.h>
using namespace std;
int a[100],b[100];    
int main() {
	int n,i,j,k=0;
	while(cin >> n) {
       for (i=0;i<k;i++) if (a[i]==n) b[i]++; 
	   if (i==k) { a[k]=n; b[k]=1; k++; }
	}
	for (i=0;i<k;i++) for (j=0;j<i;j++) if (b[j]<b[j+1]) {swap(b[j],b[j+1]); swap(a[j],a[j+1]); }
	for (n=0; b[n]==b[0] && n<k;n++);
	for (i=0;i<n;i++) for (j=0;j<i;j++) if (a[j]>a[j+1]) swap(a[j],a[j+1]);
    for (i=0;i<n;i++) cout << a[i] << endl;
  	return 0;
}

C++: #include <iostream>
#include <stdio.h>
#include <string>
#include <math.h>
#include <algorithm>
#include <vector>

using namespace std;

int main(){
	int a[101];
	for(int i = 0;i < 101;i++){
		a[i] = 0;
	}
	int n;
	while(cin >> n){

		for(int i = 0;i < 101;i++){
			if(i == n){
				a[i]++;
			}
		}
	}
	int hold = a[0];
	for(int i = 1;i < 101;i++){
		if(hold < a[i]){
			hold = a[i];
		}
	}
	for(int i = 0;i < 101;i++){
		if(a[i] == hold) cout << i << endl;
	}
	return 0;
}

C++: #include <iostream>
#include <fstream>
#include <vector>
#include <string>
#include <map>
#include <queue>
#include <cstdlib>
#include <algorithm>
#include <iterator>
#include <stack>
typedef long long int lli;
using namespace std;

/*
long long int dp[1001][2][2][2];
int main(){
	for(int i=0; i<1001; ++i){
		for(int j=0; j<2; ++j){
			for(int k=0; k<2; ++k){
				for(int l=0; l<2; ++l){
					dp[i][j][k][l]=0;
				}
			}
		}
	}
	int N;
	cin >> N;
	string str;
	cin >> str;
	if(str[0]=='J'){
		for(int i=0;i<2; ++i){
			for(int j=0; j<2; ++j){
				dp[1][1][i][j]=1;
			}
		}
	} else if(str[0]=='O'){
		for(int i=0; i<2; ++i){
			dp[1][1][1][i]=1;
		}
	} else if(str[0]=='I'){
		for(int i=0; i<2; ++i){
			dp[1][1][i][1]=1;
		}
	}

	for(int i=2; i<=N; ++i){
		if(str[i-1]=='J'){
			dp[i][1][0][0]+=(dp[i-1][1][0][0]+dp[i-1][1][1][0]+dp[i-1][1][0][1]+dp[i-1][1][1][1])%10007;
			dp[i][1][1][0]+=(dp[i-1][1][0][0]+dp[i-1][0][1][0]+dp[i-1][1][1][0]+dp[i-1][1][0][1]+dp[i-1][0][1][1]+dp[i-1][1][1][1])%10007;
			dp[i][1][0][1]+=(dp[i-1][1][0][0]+dp[i-1][0][0][1]+dp[i-1][1][1][0]+dp[i-1][1][0][1]+dp[i-1][0][1][1]+dp[i-1][1][1][1])%10007;
			dp[i][1][1][1]+=(dp[i-1][1][0][0]+dp[i-1][0][1][0]+dp[i-1][0][0][1]+dp[i-1][1][1][0]+dp[i-1][1][0][1]+dp[i-1][0][1][1]+dp[i-1][1][1][1])%10007;
		} else if(str[i-1]=='O'){
			dp[i][0][1][0]+=(dp[i-1][0][1][0]+dp[i-1][1][1][0]+dp[i-1][0][1][1]+dp[i-1][1][1][1])%10007;
			dp[i][1][1][0]+=(dp[i-1][1][0][0]+dp[i-1][0][1][0]+dp[i-1][1][1][0]+dp[i-1][1][0][1]+dp[i-1][0][1][1]+dp[i-1][1][1][1])%10007;
			dp[i][0][1][1]+=(dp[i-1][0][1][0]+dp[i-1][0][0][1]+dp[i-1][1][1][0]+dp[i-1][1][0][1]+dp[i-1][0][1][1]+dp[i-1][1][1][1])%10007;
			dp[i][1][1][1]+=(dp[i-1][1][0][0]+dp[i-1][0][1][0]+dp[i-1][0][0][1]+dp[i-1][1][1][0]+dp[i-1][1][0][1]+dp[i-1][0][1][1]+dp[i-1][1][1][1])%10007;
		} else if(str[i-1]=='I'){
			dp[i][0][0][1]+=(dp[i-1][0][0][1]+dp[i-1][1][0][1]+dp[i-1][0][1][1]+dp[i-1][1][1][1])%10007;
			dp[i][1][0][1]+=(dp[i-1][1][0][0]+dp[i-1][0][0][1]+dp[i-1][1][1][0]+dp[i-1][1][0][1]+dp[i-1][0][1][1]+dp[i-1][1][1][1])%10007;
			dp[i][0][1][1]+=(dp[i-1][0][1][0]+dp[i-1][0][0][1]+dp[i-1][1][1][0]+dp[i-1][1][0][1]+dp[i-1][0][1][1]+dp[i-1][1][1][1])%10007;
			dp[i][1][1][1]+=(dp[i-1][1][0][0]+dp[i-1][0][1][0]+dp[i-1][0][0][1]+dp[i-1][1][1][0]+dp[i-1][1][0][1]+dp[i-1][0][1][1]+dp[i-1][1][1][1])%10007;
		}
	}
	long long int ans=0;
	for(int i=0; i<2; ++i){
		for(int j=0; j<2; ++j){
			for(int k=0; k<2; ++k){
				ans+=dp[N][i][j][k]%10007;
			}
		}
	}
	cout << ans%10007 << "\n";
	return 0;
}
/*
int main(){
	int N,M;
	cin >> N >> M;
	vector<int> cost(N);
	vector<int> border(M);
	vector<int> pnt(N);
	for(int i=0; i<N; ++i){
		cin >> cost[i];
	}
	for(int i=0; i<M; ++i){
		cin >> border[i];
	}
	for(int i=0; i<M; ++i){
		for(int j=0; j<N; ++j){
			if(border[i]>=cost[j]){
				++pnt[j];
				break;
			}
		}
	}
	int max_p=-1;
	int ans;
	for(int i=0; i<N; ++i){
		if(pnt[i]>max_p) {
			max_p=pnt[i];
			ans=i+1;
		}
	}
	cout << ans << "\n";
	return 0;
}*/
/*
int main(){
	int hoge[5];
	int sum=0;
	for(int i=0; i<5; ++i){
		cin >> hoge[i];
		if(hoge[i]<40) hoge[i]=40;
		sum+=hoge[i];
	}
	cout << sum/5 << "\n";
	return 0;
}*/

/*
int abs(int x){
	if(x<0) return x*-1;
	else return x;
}

int main(){
	int W,H,N,ans=0;
	cin >> W >> H >> N;
	vector<pair<int,int> > xy(N);
	for(int i=0; i<N; ++i){
		cin >> xy[i].first >> xy[i].second;
	}
	int sx=xy[0].first;
	int sy=xy[0].second;
	for(int i=1; i<N; ++i){
		int gx=xy[i].first;
		int gy=xy[i].second;
		if((sx<=gx&&sy<=gy)||(gx<=sx&&gy<=sy)){
			if(abs(sx-gx)<abs(sy-gy)){
				ans+=abs(sy-gy);
			} else {
				ans+=abs(sx-gx);
			}
		} else {
			ans+=abs(sx-gx)+abs(sy-gy);
		}
		sx=gx;
		sy=gy;
	}
	cout << ans << "\n";
	return 0;
}*/

int main(){
	int n;
	vector<int> tmp(100+1);
	while(cin>>n&&n){
		++tmp[n];
	}
	int MAX=0;
	for(int i=1; i<=100; ++i){
		if(MAX<tmp[i]) MAX=tmp[i];
	}
	for(int i=1; i<=100; ++i){
		if(MAX==tmp[i]) cout << i << "\n";
	}
	return 0;
}

C++: #include <iostream>
#include <algorithm>
#include <deque>
using namespace std;
int main(){
	int data[150]={0},cp[150]={0},t,cnt=1,max,i=0;
	while(cin>>t){
		data[t]++;
		cnt++;
	}
	for(i=0;i<cnt;i++){
		cp[i]=data[i];
	}
	sort(data,data+150);
	for(int j=0;j<cnt;j++){
		if(data[0]==cp[j]){
			cout<<i<<endl;
		}
	}
return 0;
}

C++: #include <bits/stdc++.h>

#define FOR(i,a,b) for(int i=(a);i<(b);i++)
#define REP(i,a) FOR(i,0,a)

using namespace std;

int c[101];

int main(){
	ios::sync_with_stdio(false);
	int n;
	while (cin>>n){
		c[n]++;
	}
	int ma=0;
	REP(i,101){
		ma=max(ma,c[i]);
	}
	REP(i,101){
		if (c[i]==ma){
			cout<<i<<endl;
		}
	}
	return 0;
}

C++: #include<iostream>
#include<algorithm>
#include<cstdio>
using namespace std;

int main()
{
	int count = 0;
	int _in;
	int in[101] = {};
	
	while(scanf("%d",&_in)+1){
		++in[_in];	
	}
	
	_in = max(in[0],in[101]);
	
	for(int i=0;i<101;++i){
		if(in[i] == _in){
			cout << i << endl;
		}
	}
	
	return 0;
}