#include<iostream>
#include<stdio.h>
#include<vector>
#include<algorithm>
#include<utility>
#include<string.h>
#include<stdlib.h>
using namespace std;
pair<long long,long long> Switch(long long num, int length){
vector<int> vec;
while(num){
vec.push_back(num%10);
num /= 10;
}
int len = vec.size();
for(int i = 0; i < length - len; i++) vec.push_back(0);
sort(vec.begin(),vec.end());
long long max = 0, min = 0;
long long radix = 1;
len = vec.size();
for(int i = 0; i < len; i++){
max += vec[i] * radix;
min += vec[len - i - 1] * radix;
radix *= 10;
}
return make_pair(max, min);
}
int main(){
long long start, current;
pair<long long,long long> maxmin;
int len;
vector<long long> set;
char str[100];
while(cin>>start){
set.clear();
set.push_back(start);
sprintf(str, "%d", start);
len = strlen(str);
maxmin = Switch(start, len);
current = maxmin.first - maxmin.second;
vector<long long>::iterator it = find(set.begin(), set.end(), current);
while(it == set.end()){
set.push_back(current);
maxmin = Switch(current, len);
current = maxmin.first - maxmin.second;
it = find(set.begin(), set.end(), current);
}
for(vector<long long>::iterator iter = it; iter != set.end(); iter++){
if( (iter+1) == set.end()) cout << *iter;
else cout << *iter << " ";
}
cout << endl;
}
return 0;
}
#include<stdio.h>
#include<vector>
#include<algorithm>
#include<utility>
#include<string.h>
#include<stdlib.h>
using namespace std;
pair<long long,long long> Switch(long long num, int length){
vector<int> vec;
while(num){
vec.push_back(num%10);
num /= 10;
}
int len = vec.size();
for(int i = 0; i < length - len; i++) vec.push_back(0);
sort(vec.begin(),vec.end());
long long max = 0, min = 0;
long long radix = 1;
len = vec.size();
for(int i = 0; i < len; i++){
max += vec[i] * radix;
min += vec[len - i - 1] * radix;
radix *= 10;
}
return make_pair(max, min);
}
int main(){
long long start, current;
pair<long long,long long> maxmin;
int len;
vector<long long> set;
char str[100];
while(cin>>start){
set.clear();
set.push_back(start);
sprintf(str, "%d", start);
len = strlen(str);
maxmin = Switch(start, len);
current = maxmin.first - maxmin.second;
vector<long long>::iterator it = find(set.begin(), set.end(), current);
while(it == set.end()){
set.push_back(current);
maxmin = Switch(current, len);
current = maxmin.first - maxmin.second;
it = find(set.begin(), set.end(), current);
}
for(vector<long long>::iterator iter = it; iter != set.end(); iter++){
if( (iter+1) == set.end()) cout << *iter;
else cout << *iter << " ";
}
cout << endl;
}
return 0;
}