任意一个4位自然数N(N不能是4个数字一样,如1111、2222、….9999是不可以的,N也不能是6174),将组成自然数N的4个数字重新排列,形成一个最大数和最小数,最大数和最小数相减,其差是还是自然数,将差的各数字再重新排列,又形成一个最大数和最小数,最大数和最小数相减,其差还是自然数。反复进行,直到差是一个神秘数6174(数学黑洞)结束。

Input

输入数据有多组,每组占一行,每行包含一个4位自然数N。输入文件直到EOF为止!

Output

对每组输入,输出有2行。第一行是所有差,以空格分隔,最后一个数后也有空格;第二行是差的个数。

Example Input

1000
1500
3000

Example Output

999 8991 8082 8532 6174
5
5085 7992 7173 6354 3087 8352 6174
7
2997 7173 6354 3087 8352 6174
6

Hint

 

Author

 zlh


#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main()
{
int n, i, j, t;
char a[100][4], b[100][4], c[4];
while(~scanf("%s",c))
{
n = 0;
while(strcmp(c, "6174") != 0)
{
strcpy(a[n], c);
for(i = 0; i < 4; i++)
{
for(j = 0; j < 4 - i - 1; j++)
{
if(a[n][j] < a[n][j+1])
{
t = a[n][j];
a[n][j] = a[n][j+1];
a[n][j+1] = t;
}
}
}
for(i = 0; i < 4; i++)
{
j = 3 - i;
b[n][j] = a[n][i];
c[i] = 0;
}
for(i = 3; i >= 0; i--)
{c[i] += a[n][i] - b[n][i] + 48;
if(c[i] < 48)
{c[i - 1] -= 1;c[i] += 10;}
}
for(i = 0; i < 4; i++)
{
if(c[0] != 48) printf("%c",c[i]);
else if(i!=0) printf("%c", c[i]);
}
printf(" ");
n++;
}
printf("\n%d\n", n);
}
return 0;
}