//因为用来判断循环节的map那里要保守一点把输入的m也存储进去(数组里也是要存),毕竟可能会有从m开始循环的圆舞曲(至于什么不足4位补零没这个数据好像)
#include <bits/stdc++.h>
using namespace std;
long long m, n, m1, a[114514];
string s;
map<long long, bool> unomap;
bool b = 0;
int main()
{
while (cin >> m)
{
m1 = m;
unomap.clear();
memset(a, 0, sizeof(a));
b = 0;
a[1] = m;
unomap[m] = 1;
for (int cnt = 2;; cnt++)
{
s = to_string(m1);
sort(s.begin(), s.end());
string s1 = s;
reverse(s1.begin(), s1.end());
n = stoll(s1) - stoll(s);
if (n * 10 < 10000)
n *= 10;
a[cnt] = n;
m1 = n;
if (unomap[n] == 0)
unomap[n] = 1;
else
{
for (int i = 1; i <= cnt; i++)
{
if (a[i] == n)
{
if (!b)
b = 1;
else
break;
}
if (b == 1)
printf("%lld ", a[i]);
}
cout << '\n';
break;
}
}
}
return 0;
}