package com.javarush.task.task18.task1803;

import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.InputStreamReader;
import java.util.HashSet;

/*
Самые частые байты
*/import static java.util.Collections.frequency;

public class Solution {
    public static void main(String[] args) throws Exception {
        HashSet<Integer> set = new HashSet<Integer>();// Сет для заполнения
        HashSet<Integer> set1 = new HashSet<>();//Сет для повторов (байты, которые уже выводили)
        int max = 1;

        //Запись байтов в HashSet
        FileInputStream fis = new FileInputStream(new BufferedReader(new InputStreamReader(System.in)).readLine());
        while (fis.available() > 0) {
            set.add(fis.read());
        }
        fis.close();

        //Определяем максимльное количество повторов max
        for (int currentByte : set) {
            int currentMax = frequency(set, currentByte);
            if (currentMax > max) {
                max = currentMax;
            }
        }


        /* Перебираем set
         * Если байт встречается max раз, то проверяем следующее условие
         * Если байта нету в сете повторов set1 (если мы его уже не выводили), то
         * Выводим байт в консоль
         * Заносим байт в сет повторов (т.о. если байт нам встретится еще раз, мы выводить его не будем)*/
        for (int currentByte : set) {
            if (frequency(set, currentByte) == max) {
                if (!set1.contains(currentByte)) {
                    System.out.print(currentByte + " ");
                    set1.add(currentByte);
                }
            }
        }
    }
}