#include <iostream> #include <string> #include <vector> #include <algorithm> #include <map> using namespace std; struct Item { int index; char c; int num; }; int main() { string line; getline(cin, line); int length = line.size(); vector<Item> list = vector<Item>(length); for (int i = 0; i < length; i++) { list[i].c = line[i]; list[i].index = i; list[i].num = toupper(line[i]); } for (int i = 0; i < length; i++) { if (!isalpha(list[i].c)) continue; for (int j = i + 1; j < length; j++) { if (!isalpha(list[j].c)) continue; int a = list[i].num; int b = list[j].num; int a_idx = list[i].index; int b_idx = list[j].index; Item tmp; if (a > b || (a == b && a_idx > b_idx)) { tmp = list[j]; list[j] = list[i]; list[i] = tmp; } } } for (auto c : list) cout << c.c; cout << endl; return 0; }