P4051 20pts
#include <bits/stdc++.h>
using namespace std;
struct k{
int a;
int pointer;
};
vector<k> ak;
bool cmp(k x,k y){
if(x.a<y.a)return true;
if(x.a>y.a)return false;
return cmp(ak[x.pointer+1],ak[y.pointer+1]);
}
int main(){
string n;
cin>>n;
for(int i=0;i<n.length();i++){
k l;
l.a=(int)n[i];
l.pointer=i;
ak.push_back(l);
}
sort(ak.begin(),ak.end(),cmp);
for(int i=0;i<n.length();i++){
cout<<n[(ak[i].pointer+n.length()-1)%(n.length())];
}
return 0;
}