import java.util.*;
import java.util.stream.Collectors;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        String str = in.nextLine();
        String[] strs = str.split(" ");
        
        // 我们认为当一个单词出现的次数不少于3次时,该单词为“用户期望搜索的单词”,即称为关键词。请你根据小红的记录,输出小红的用户画像对应的所有关键词。
        // 每行输入一个。你需要按照搜索频次从高到低输出。频次相同的,你需要按字典序升序输出。
        HashMap<String,Integer> map = new HashMap<>();
        for(String s : strs){
            if(map.containsKey(s)){
                map.put(s, map.get(s) + 1);
            }else{
                map.put(s, 1);
            }
        }
	  	// 流式编程
        List<Map.Entry<String, Integer>> keywords = map.entrySet().stream()
        .filter((entry -> entry.getValue() >= 3))
        .sorted((a, b) -> {
            if(!a.getValue().equals(b.getValue())){
                return b.getValue() - a.getValue();
            }
            return a.getKey().compareTo(b.getKey());
        })
        .collect(Collectors.toList());
        for(Map.Entry<String, Integer> entry : keywords){
            System.out.println(entry.getKey());
        }
    }

    public static void mergeSort(int[] arr){
        if(arr.length <= 1){
            return;
        }
        int mid = arr.length / 2;
        int[] left = Arrays.copyOfRange(arr, 0, mid);
        int[] right = Arrays.copyOfRange(arr, mid, arr.length);
        mergeSort(left);
        mergeSort(right);

        merge(arr, left, right);
    }

    public static void merge(int[] result, int[] left, int[] right){
        int i = 0; 
        int j = 0;
        int k = 0;
        while(i < left.length && j < right.length){
            if(left[i] > right[j]){
                result[k++] = left[i++];
            }else{
                result[k++] = right[j++];
            }
        }
        while(i < left.length){
            result[k++] = left[i++];
        }
        while(j < right.length){
            result[k++] = right[j++];
        }
    } 
}