#include <bits/stdc++.h>
#define int long long
using namespace std;
inline bool cmp1(int x, int y) {
return x > y;
}
inline bool cmp2(int x, int y) {
return x < y;
}
int nn[101], len;
inline int getmaxiumsort(int x) {
// 获取由当前数字组成的最大排序
len = 0;
while (x != 0) {
nn[++len] = x % 10;
x /= 10;
}
sort(nn + 1, nn + len + 1, cmp1);
int ret = 0;
for (int i = 1; i <= len; ++i) {
ret *= 10;
ret += nn[i];
}
return ret;
}
inline int getminiumsort(int x) {
// 获取由当前数字组成的最小排序
len = 0;
while (x != 0) {
nn[++len] = x % 10;
x /= 10;
}
sort(nn + 1, nn + len + 1, cmp2);
int ret = 0;
for (int i = 1; i <= len; ++i) {
ret *= 10;
ret += nn[i];
}
return ret;
}
int repeat[1000001], id;
inline int findnum(int x) { // 算了,我还是不用先 sort 再 log 二分的了,还不如直接顺序查找!!!
for (int i = 0; i <= id; ++i) {
if (repeat[i] == x) {
return i;
}
}
return -1;
}
signed main() {
int x;
while (cin >> x) {
bool repeating; // 当前是否已经进入循环判定状态
int beg, length; // 循环节的起始点和长度
int begnum; // 循环节的起始数字
int now; // 当前数字
// 【Part - 1】 初始化
now = x;
repeating = false;
// cout << getmaxiumsort(now) << endl;
// cout << getminiumsort(now) << endl;
// 【Part - 2】 判定循环节
while (1) {
// 【判定循环节 Part - 1】 生成下一步排列
int now1 = getmaxiumsort(now);
int now2 = getminiumsort(now);
now = now1 - now2;
/*cout << now1 << '-' << now2 << '=' << now << endl;
for (int i = 0; i <= id; ++i) {
cout << repeat[i] << ' ';
}
cout << endl;*/
// 【判定循环节 Part - 2】 判断是否循环
if (repeating == false) { // 不在循环判定状态,照常加入数组
int k = findnum(now);
//cout << k << ' ' << repeat[k] << ' ' << now << endl;
if (k != -1) { // 当前数字之前出现过,表示目前可能出现循环,进入循环判定状态
repeating = true;
beg = k;
length = 1;
begnum = now;
} else { // 继续加入数组,寻找循环节
repeat[id++] = now;
}
} else { // 在循环判定状态,不再把新的数加入数组,只是判定现在是否已经形成循环
//cout << now << endl;
if (now == repeat[beg + length]) { // 循环节未结束,继续累加长度
length++;
} else if (now == begnum) { // 循环节已结束,立即退出循环,输出循环节
break ;
} else if (now != repeat[beg +length] && now != begnum) { // 没有形成循环,推出循环判定状态,继续寻找其它循环节
repeating = false;
}
}
//system("pause");
}
// 【Part - 3】 输出循环节
// 输出以 beg 开始持续 length 个元素的循环节
for (int i = beg; i < beg + length; ++i) {
cout << repeat[i] << " ";
}
cout << endl;
}
}