Problem:
Mode Value

Your task is to write a program which reads a sequence of integers and prints mode values of the sequence.
The mode value is the element which occurs most frequently.

Input

A sequence of integers ai (1 ≤ ai ≤ 100). The number of integers is less than or equals to 100.

Output

Print the mode values. If there are several mode values, print them in ascending order.

Sample Input

5
6
3
5
8
7
5
3
9
7
3
4

Output for the Sample Input

3
5

For example, 3 and 5 respectively occur three times, 7 occurs two times, and others occur only one. So, the mode values are 3 and 5.

Solution in C# (judge verdict: Wrong Answer)

using System;
using System.Collections.Generic;

namespace AOJ0028
{
    class Program
    {
        static void Main(string[] args)
        {
            string input;
            int tmp;
            IDictionary<int, int> table = new Dictionary<int, int>();

            while (true)
            {
                input = Console.ReadLine();
                if (String.IsNullOrEmpty(input)) break;

                tmp = int.Parse(input);
                if (table.ContainsKey(tmp))
                {
                    table[tmp]++;
                } else
                {
                    table[tmp] = 1;
                }

            }

            SortedDictionary<int, int> stable = new SortedDictionary<int, int>(table);

            List<KeyValuePair<int, int>> sorted = SortByValue(stable);

            for (int i=0; i < sorted.Count; i++)
            {
                if (sorted[i].Value == sorted[i+1].Value)
                {
                    Console.WriteLine(sorted[i].Key);
                } 
                if (sorted[i].Value > sorted[i+1].Value)
                {
                    Console.WriteLine(sorted[i].Key);
                    break;
                }
            }
        }

        static List<KeyValuePair<int,int>> SortByValue(SortedDictionary<int,int> stable)
        {
            List<KeyValuePair<int,int>> list = new List<KeyValuePair<int,int>>(stable);
            list.Sort(delegate (KeyValuePair<int, int> kvp1, KeyValuePair<int, int> kvp2) { return kvp2.Value - kvp1.Value; });
            return list;
        }
    }
}