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 n[1000], data[1000] = {0}, ans[100];
	int count = 0, count2 = 0, max = 0, max2 = 0;
	while (cin >> n[count]){
		if (n[count] > max)
			max = n[count];
		data[n[count]]++;
		count++;
	}
	for (int i = 0; i <= max; i++) {
		if (data[i] >= max2) {
			max2 = data[i];
		}
	}
	for (int i = 0; i <= max; i++) {
		if (data[i]==max2) {
			ans[count2] = i;
			count2++;
		}
	}
	for (int k = 0; k < count2; k++)
		cout << ans[k] << endl;
	return 0;
}

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

int main()
{
	int cnt[101];
	fill(cnt,cnt+101,0);

	int ans=0,i;
	while(cin>>i)
	{
		cnt[i]++;
		ans=max(ans,cnt[i]);
	}

	for (int i = 0; i < 101; ++i)
	{
		if(cnt[i]==ans) cout<<i<<endl;
	}
	return 0;
}

C++: #include<iostream>

using namespace std;

// 1?100までの整数データのみであるため、
// 配列に出現回数を記録してもっとも多いものを
// 出力する。

int main() {
	// データは1から100であるが、
	// インデックスでも1から100値をそのまま使用できるほうが
	// コードが煩雑にならないため、配列サイズを101にする。
	int a[101] = {};
	int n;
	while (cin >> n) {
		++a[n];
	}

	// 出現回数の最大値を求める。
	int max = 0;
	for (int i = 1; i <= 100; ++i) {
		if (max < a[i]) {
			max = a[i];
		}
	}

	// 出現回数が最大値と同じ値を出力する。
	for (int i = 1; i <= 100; ++i) {
		if (max == a[i]) {
			cout << i << endl;
		}
	}
	return 0;
}

C++: #include <cstdio>
#include <vector>
#include <algorithm>

using namespace std;

int n[101],mx;
vector<int> ms;

int main(){
  int m;
  while(~scanf("%d",&m)){
    if(++n[m]==mx){
      ms.push_back(m);
    }else if(n[m]>mx){
      mx++;
      ms.clear();
      ms.push_back(m);
    }
  }
  sort(ms.begin(),ms.end());
  for(int i=0; i<ms.size(); i++)
    printf("%d\n",ms[i]);
}

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

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

	int x;
	int max = 0;
	while(cin >> x) {
		a[x]++;
		if(a[x] > max) {
			max = a[x];
		}
	}
	
	for(int i = 1; i < 101; i++) {
		if(a[i] == max) {
			cout << i << endl;
		} 
	}

	return 0;
}

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

int main() {
	vector<int> array;
	int stock;

	while (cin >> stock) {
		if (stock == 0) break;
		array.push_back(stock);
	}

	int time[101] = { 0 };

	for (int i = 0;i < array.size();i++) {
		time[array.at(i)]++;
	}

	int max = 0;
	for (int j = 0;j < 100;j++) {
		if (time[j + 1] > max) {
			max = time[j + 1];
		}
	}
	for (int k = 0;k < 100;k++) {
		if (time[k + 1] == max) {
			cout << k + 1 << endl;
		}
	}
	
	return 0;
}

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

int main(){
	int nums[101]={0};
	int a;
	
	while( scanf(" %d", &a) != EOF ){
		++nums[a];
	}
	
	int max=0;
	for(int i=1; i<=100; ++i)
		if(max < nums[i]) max=nums[i];
		
	for(int i=1; i<=100; ++i)
		if(max==nums[i])
			printf("%d\n", i);
			
	return 0;
}

C++: #include<iostream>
#include<string.h>
#include<vector>
#include<algorithm>
using namespace std;
int main()
{
    int a[101];
    memset(a,0,sizeof(a));
    vector<int>vec;
    int in;
    while(cin>>in){
        a[in]++;
    }
    int m=0;
    for(int i=0;i<101;i++){
        if(a[i]>m){
            vec.clear();
            vec.push_back(i);
        }
        if(a[i]==m){
            vec.push_back(i);
        }
    }
    sort(vec.begin(),vec.end());
    for(int i=0;i<vec.size();i++){
        cout<<vec[i]<<endl;
    }
    return 0;
}

C++: #include<iostream>
#include<sstream>
#include<fstream>
#include<cstdio>
#include<vector>
#include<list>
#include<stack>
#include<queue>
#include<deque>
#include<map>
#include<set>
#include<algorithm>
#include<string>
#include<cmath>
#include<cstdlib>
using namespace std;

int main(){
	map<int,int> table;
	int n,maxi = 0;
	while(scanf("%d",&n)==1){
		table[n]++;
		maxi = max(maxi,table[n]);
	}
	for(map<int,int>::iterator it = table.begin();it!=table.end();++it){
		if(it->second == maxi){
			cout<<it->first<<endl;
		}
	}	
	return 0;
}

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

int main() {
  int a[101];
  int n, max;
  memset(a, 0, sizeof(int)*101);
  while (cin >> n) a[n]++; 
  for (int i=0; i<=100; i++) {
    if (a[i] > max) max = a[i];
  }
  for (int i=0; i<=100; i++) {
    if (a[i] == max) cout << i << endl;
  }
  return 0;
}

C++: #include <iostream>
#include <algorithm>

using namespace std;

int main(){
	int ary[100];
	int hikaku[100];
	int n;
	int a = 0;
	
	for(int i = 1; i <= 100; i++){
		ary[i] = i;
		hikaku[i] = 0;
	}

	while(cin >> n){

		for(int i = 1; i <= 100; i++){

			if(ary[i] == n){
				hikaku[i]++;
				a = max(a,hikaku[i]);
			}
		}

	}

	for(int i = 1; i <= 100; i++){
		
		if(a == hikaku[i]){
			cout << i << endl;
		}
	}
	cout << endl;

	return 0;
}

C++: #include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
int sum[101],n,mx,cou;
int main(){
    while(cin>>n){
        sum[n]++;
    }
    for(int i=0;i<100;i++)mx=max(mx,sum[i]);
    for(int i=0;i<100;i++){
        if(mx==sum[i]){
            cout<<i<<endl;
    }
return 0;
}

C++: #include <iostream>
#include <vector>

using namespace std;

int main(int argc, char *argv[]) {
  vector<int> result;
  int num[100] = {0};
  int tmp;
  while (cin >> tmp)
    num[tmp-1]++;

  int max = 0;
  for (int i = 0; i < 100; i++)
    if (max < num[i]) {
      max = num[i];
      result.clear();
      result.push_back(i+1);
    } else if (max == num[i]) {
      result.push_back(i+1);
    }

  for (int i = 0; i < result.size(); i++)
    cout << result[i] << endl;
  return 0;
}

C++: #include<iostream>

using namespace std;

int main(){
	int n,max=0;
	int in[10]={0};
	while(cin>>n){
		in[n]++;
		if(max<in[n])max=in[n];
	}
	
	for(int j=0;j<10;j++){
		if(max==in[j])cout<<j<<endl;
	}

}

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

int main() {
  int r[100];
  for (int i=0; i<100; i++) r[i] = 0;
  int n;
  while (cin >> n) r[n - 1]++;
  int maxValue=-1;
  for (int i=0; i<100; i++) {
    if (r[i] > maxValue) maxValue = r[i];
  }
  for (int i=0; i<100; i++) {
    if (r[i] == maxValue) cout << i-1 << endl;
  }
  return 0;
}

C++: #include <bits/stdc++.h>
using namespace std;

int main() {
	ios :: sync_with_stdio(false);
	map <int, int> mp;
	for(int n; cin >> n; )
		mp[n] ++;
	int f = 0;
	for(auto p : mp)
		f = max(f, p.second);
	for(auto p : mp)
		if(f == p.second)
			cout << p.first << '\n';
	return 0;
}

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

int main()
{
	vector<int> a(100, 0);
	int n;
	int max_num = 0;
	
	while(cin >> n)
	{
		a[n-1] = a[n-1]+1;

	}
	max_num = *max_element(a.begin(), a.end());
	for(int i=0; i<a.size(); i++)
	{
		if(a[i] == max_num)
		{
			cout << i+1 << endl;
		}
	}
	return 0;
}

C++: #include<cstdio>

int main(){
	int a[101] = {};
	int t, c = 0;
	while(scanf("%d", &t) + 1){
		a[t]++;
		if(a[t] > c){
			c++;
		}
	}
	for(int i = 1; i < 101; i++){
		if(a[i] == c){
			printf("%d\n", i);
		}
	}
}