#include <iostream>
#include <algorithm>
using namespace std;
string findLDS(const string& sequence) {
int n = sequence.size();
// dp[i] 表示以 sequence[i] 结尾的最大递减子序列的长度
int dp[50] = {0};
// 记录最大递减子序列的末尾位置
int endPos[50] = {-1};
for (int i = 1; i < n; ++i) {
for (int j = 0; j < i; ++j) {
if (sequence[j] >= sequence[i] && dp[j] + 1 > dp[i]) {
dp[i] = dp[j] + 1;
endPos[i] = j;
}
}
}
cout << dp << endl;
// 找到最大递减子序列的末尾位置
int maxLen = 0, maxEndPos = 0;
for (int i = 0; i < n; ++i) {
if (dp[i] > maxLen) {
maxLen = dp[i];
maxEndPos = i;
}
}
// 构造最大递减子序列
string result;
while (maxEndPos != -1) {
result += sequence[maxEndPos];
maxEndPos = endPos[maxEndPos];
}
reverse(result.begin(), result.end());
return result;
}
int main() {
string sequence;
bool firstOutput = true; // 用于标记是否为第一次输出结果
while (cin >> sequence) {
string LDS = findLDS(sequence);
if (!firstOutput) {
cout << endl;
} else {
firstOutput = false;
}
cout << LDS;
}
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8YWxnb3JpdGhtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKc3RyaW5nIGZpbmRMRFMoY29uc3Qgc3RyaW5nJiBzZXF1ZW5jZSkgewogICAgaW50IG4gPSBzZXF1ZW5jZS5zaXplKCk7CgogICAgLy8gZHBbaV0g6KGo56S65LulIHNlcXVlbmNlW2ldIOe7k+WwvueahOacgOWkp+mAkuWHj+WtkOW6j+WIl+eahOmVv+W6pgogICAgaW50IGRwWzUwXSA9IHswfTsKCiAgICAvLyDorrDlvZXmnIDlpKfpgJLlh4/lrZDluo/liJfnmoTmnKvlsL7kvY3nva4KICAgIGludCBlbmRQb3NbNTBdID0gey0xfTsKCiAgICBmb3IgKGludCBpID0gMTsgaSA8IG47ICsraSkgewogICAgICAgIGZvciAoaW50IGogPSAwOyBqIDwgaTsgKytqKSB7CiAgICAgICAgICAgIGlmIChzZXF1ZW5jZVtqXSA+PSBzZXF1ZW5jZVtpXSAmJiBkcFtqXSArIDEgPiBkcFtpXSkgewogICAgICAgICAgICAgICAgZHBbaV0gPSBkcFtqXSArIDE7CiAgICAgICAgICAgICAgICBlbmRQb3NbaV0gPSBqOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoJY291dCA8PCBkcCA8PCBlbmRsOwogICAgLy8g5om+5Yiw5pyA5aSn6YCS5YeP5a2Q5bqP5YiX55qE5pyr5bC+5L2N572uCiAgICBpbnQgbWF4TGVuID0gMCwgbWF4RW5kUG9zID0gMDsKICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbjsgKytpKSB7CiAgICAgICAgaWYgKGRwW2ldID4gbWF4TGVuKSB7CiAgICAgICAgICAgIG1heExlbiA9IGRwW2ldOwogICAgICAgICAgICBtYXhFbmRQb3MgPSBpOwogICAgICAgIH0KICAgIH0KCiAgICAvLyDmnoTpgKDmnIDlpKfpgJLlh4/lrZDluo/liJcKICAgIHN0cmluZyByZXN1bHQ7CiAgICB3aGlsZSAobWF4RW5kUG9zICE9IC0xKSB7CiAgICAgICAgcmVzdWx0ICs9IHNlcXVlbmNlW21heEVuZFBvc107CiAgICAgICAgbWF4RW5kUG9zID0gZW5kUG9zW21heEVuZFBvc107CiAgICB9CgogICAgcmV2ZXJzZShyZXN1bHQuYmVnaW4oKSwgcmVzdWx0LmVuZCgpKTsKICAgIHJldHVybiByZXN1bHQ7Cn0KCmludCBtYWluKCkgewogICAgc3RyaW5nIHNlcXVlbmNlOwogICAgYm9vbCBmaXJzdE91dHB1dCA9IHRydWU7IC8vIOeUqOS6juagh+iusOaYr+WQpuS4uuesrOS4gOasoei+k+WHuue7k+aenAogICAgd2hpbGUgKGNpbiA+PiBzZXF1ZW5jZSkgewogICAgICAgIHN0cmluZyBMRFMgPSBmaW5kTERTKHNlcXVlbmNlKTsKICAgICAgICBpZiAoIWZpcnN0T3V0cHV0KSB7CiAgICAgICAgICAgIGNvdXQgPDwgZW5kbDsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBmaXJzdE91dHB1dCA9IGZhbHNlOwogICAgICAgIH0KICAgICAgICBjb3V0IDw8IExEUzsKICAgIH0KICAgIHJldHVybiAwOwp9Cg==