/*
分析:
一开始就想到要把原数分成三份为a、b、c的,但是没有
继续想下去。。。就这样和answer擦肩而过了,囧~~~
吸取教训吧~。
这个方法的详细解释网上一堆呢,这儿就不啰嗦了。。。
2012-11-22
*/
#include"stdio.h"
#include"string.h"
#include"stdlib.h"
int n;
int ans[111],k;
int cmp(const void *a,const void *b)
{
return *(int *)a-*(int *)b;
}
int main()
{
int i;
int a,b,c;
while(scanf("%d",&n),n)
{
k=0;
for(i=1;i<=n;i*=10)
{
a=n/i/11;
b=n/i-11*a;
if(b<10)
{
c=(n-a*i*11-b*i)/2;
if(2*c+b*i+a*i*11==n) ans[k++]=a*10*i+b*i+c;
}
if(--b>=0 && (b||a))
{
c=(n-a*i*11-b*i)/2;
if(2*c+b*i+a*i*11==n) ans[k++]=a*10*i+b*i+c;
}
}
if(!k) {printf("No solution.\n");continue;}
qsort(ans,k,sizeof(int),cmp);
printf("%d",ans[0]);
for(i=1;i<k;i++) if(ans[i]!=ans[i-1]) printf(" %d",ans[i]);
printf("\n");
}
return 0;
}