#include <stdio.h>
#include <string.h>
int main()
{
char str[1001] = { '\0' };
scanf("%s", str);
char str1[1000][1001]={'\0'};
int i,j;
int sum,num= strlen(str);
for (j = 0; j < num; j++)
{
for (i = 0; i < num-j; i++)
{
str1[j][i] = str[i+j];
}
}//사전순서에 관계없이 잘라서 정리함
char tmp[1001];//바꾸기위해 만듬
for (;;)
{
sum = 0;
for (i = 0; i < num-1; i++)
{
if (strcmp(str1[i], str1[i + 1])==1)//사전순서가 반대로 되어있을 때
{
for (j = 0; j < num; j++)//바꾸기
{
tmp[j] = str1[i + 1][j];
str1[i + 1][j] = str1[i][j];
str1[i][j] = tmp[j];
}
}
else sum++;
}
if (sum == num-1)break;//사전순서대로 정렬이 되었다면 포문 탈출
}
for (i = 0; i < num; i++)
{
printf("%s\n", str1[i]);//출력
}
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdHJpbmcuaD4KaW50IG1haW4oKQp7CgljaGFyIHN0clsxMDAxXSA9IHsgJ1wwJyB9OwoJc2NhbmYoIiVzIiwgc3RyKTsKCWNoYXIgc3RyMVsxMDAwXVsxMDAxXT17J1wwJ307CglpbnQgaSxqOwoJaW50IHN1bSxudW09IHN0cmxlbihzdHIpOwoJZm9yIChqID0gMDsgaiA8IG51bTsgaisrKQoJewoJCWZvciAoaSA9IDA7IGkgPCBudW0tajsgaSsrKQoJCXsKCQkJc3RyMVtqXVtpXSA9IHN0cltpK2pdOwoJCX0KCX0vL+yCrOyghOyInOyEnOyXkCDqtIDqs4Tsl4bsnbQg7J6Y65287IScIOygleumrO2VqAoJY2hhciB0bXBbMTAwMV07Ly/rsJTqvrjquLDsnITtlbQg66eM65OsCgkKCWZvciAoOzspCgl7CgkJc3VtID0gMDsKCQlmb3IgKGkgPSAwOyBpIDwgbnVtLTE7IGkrKykKCQl7CgkJCWlmIChzdHJjbXAoc3RyMVtpXSwgc3RyMVtpICsgMV0pPT0xKS8v7IKs7KCE7Iic7ISc6rCAIOuwmOuMgOuhnCDrkJjslrTsnojsnYQg65WMCgkJCXsKCQkJZm9yIChqID0gMDsgaiA8IG51bTsgaisrKS8v67CU6r646riwCgkJCQl7CgkJCQkJdG1wW2pdID0gc3RyMVtpICsgMV1bal07CgkJCQkJc3RyMVtpICsgMV1bal0gPSBzdHIxW2ldW2pdOwogCQkJCQlzdHIxW2ldW2pdID0gdG1wW2pdOwoJCQkJfQoJCQl9CgkJCWVsc2Ugc3VtKys7CgkJfQoJCWlmIChzdW0gPT0gbnVtLTEpYnJlYWs7Ly/sgqzsoITsiJzshJzrjIDroZwg7KCV66Cs7J20IOuQmOyXiOuLpOuptCDtj6zrrLgg7YOI7LacCgl9CgkKCglmb3IgKGkgPSAwOyBpIDwgbnVtOyBpKyspCgl7CgkJcHJpbnRmKCIlc1xuIiwgc3RyMVtpXSk7Ly/stpzroKUKCX0KfQ==