import java.util.*;
public class Solution{
    public static void main(String[] arg){
        Scanner in = new Scanner(System.in);
        String init = in.next();
        char[] ch = init.toCharArray();
        //System.out.println(ch);
        int len = ch.length;
        char big = 'a';
        for(int i = 0; i<len; i++){
            if(ch[i]>big){
                big = ch[i];
            }
        }
        ArrayList<Character> list = new ArrayList<>();
        char temp = 'a';
        int count = 0;
        for(int i = 0; i<len; i++){
            if(ch[i] == big){
                count++;
            }
        }
        int cnt = 0;
        for(int i = len-1; i>0; i--){
            if(ch[i]!=big && !list.contains(ch[i])){
                list.add(ch[i]);
            }else if(ch[i] == big){
                list.add(ch[i]);
                cnt++;
            }else if(ch[i]!=big && ch[i]>temp && cnt<count){
                list.add(ch[i]);
            }
            temp = ch[i];

        }
        Collections.reverse(list);
        String re = "";
        for(int i = 0; i<list.size(); i++){
            re += String.valueOf(list.get(i));
        }
        System.out.println(re);

    }
}
//bcadabdcbbcad
这题一直报错,最后一分钟才发现问题,可是来不及改了,多出来两分钟改完了,mmp,也不知道能通过多少0.0
思路是:倒序遍历,第一次出现的字符一定保留,不是第一次出现的但是比上一个大的保留而且
没有遍历到最后一个最大字符的保留,最大字符一定保留。反正例子里头最复杂的那个肯定可以通过。