using System.Collections.Generic;
public static void Main()
Console.WriteLine("Hello World");
int[] arr1 = {3,1,2,2,4};
int[] arr2 = {8,5,5,5,5,1,1,1,4,4};
static void sort(IEnumerable<int> arr)
var frequency = new Dictionary<int, int>();
if(!frequency.ContainsKey(a))
var groups = group_by_frequency(frequency);
static void final_print(IDictionary<int, IEnumerable<int>> unsortedGroups)
var allKeys = unsortedGroups.Keys.ToList();
foreach(var k in allKeys)
var sortedValues = unsortedGroups[k];
foreach(var sval in sortedValues)
var o = get_output(sval, k);
static string get_output(int number, int frequency)
var s = new StringBuilder();
for(int i = 0; i < frequency; ++i)
return s.ToString().TrimEnd();
static IDictionary<int, IEnumerable<int>> group_by_frequency(IDictionary<int, int> dict)
var groups = new Dictionary<int, IEnumerable<int>>();
var allFrequencies = dict.Values.Distinct();
foreach(var freq in allFrequencies)
var keysWithMatchingFrequency = dict.Where(x => x.Value == freq).Select(x => x.Key).ToList();
keysWithMatchingFrequency.Sort();
groups.Add(freq, keysWithMatchingFrequency);
static void print(IDictionary<int, int> dict)
foreach(var k in dict.Keys)
Console.Write(string.Format("({0}, {1}) ", k, dict[k]));
static void print_groups(IDictionary<int, IEnumerable<int>> dict)
foreach(var k in dict.Keys)
Console.Write(string.Format("({0},{1}) ", k, print_list(dict[k])));
static string print_list(IEnumerable<int> lst)
var sb = new StringBuilder();