//用的linkedhashmap
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Scanner;

public class Main {
public static void sort(int[] num){
LinkedHashMap<Integer, Integer> map=new LinkedHashMap<>();
for (int i = 0; i < num.length; i++) {
if (map.containsKey(num[i])) {
map.put(num[i], map.get(num[i])+1);
}
else {
map.put(num[i], 1);
}
}
List<Map.Entry<Integer, Integer>> list=new ArrayList<>(map.entrySet());
Collections.sort(list,new Comparator<Map.Entry<Integer, Integer>>() {
public int compare(Entry<Integer, Integer>o1,Entry<Integer, Integer>o2){
return o2.getValue().compareTo(o1.getValue());
}
});
List<Integer> list1=new ArrayList<>();
List<Integer> list2=new ArrayList<>();
for(Entry<Integer, Integer> mapp:list){
list1.add(mapp.getKey());
list2.add(mapp.getValue());
}
int[] newnum=new int[num.length];
int j=0;
int index=0;
for (int i = 0; i < list2.size(); i++) {
while(index<list2.get(i)){
newnum[j]=list1.get(i);
j++;
index++;
}
index=0;
}
for (int i = 0; i < newnum.length; i++) {
System.out.println(newnum[i]);
}
}
public static void main(String[] args) {
int[] num={1,1,1,2,3,3,4};
sort(num);
}
}