#include<bits/stdc++.h>
#define re register
using namespace std;
int cnt=0,vis[1000050],f=0;
long long n,Lucky=0;
int main()
{
scanf("%lld",&n);
if(n==1) {
cout<<0<<endl;
return 0;
}
for(re int i=0;i<=9;++i) {
Lucky=Lucky+i;
for(re int j=0;j<=9;++j) {
Lucky=Lucky*10+j;
for(re int x=0;x<=9;++x) {
Lucky=Lucky*10+x;
for(re int y=0;y<=9;++y) {
Lucky=Lucky*10+y;
for(re int z=0;z<=9;++z) {
Lucky=Lucky*10+z;
for(re int Nt=0;Nt<=9;++Nt) {
Lucky=Lucky*10+Nt;
for(re int Fool=0;Fool<=9;++Fool) {
Lucky=Lucky*10+Fool;
for(re int q=0;q<=9;++q) {
if(Lucky*10+q>n) {
f=1;break;
}
else if(Lucky*10+q+q+i+j+x+y+z+Nt+Fool==n) vis[++cnt]=Lucky*10+q;
else if(Lucky*10+q+q+i+j+x+y+z+Nt+Fool>n) break;
}
if(f) break;Lucky/=10;
}
if(f) break;Lucky/=10;
}
if(f) break;Lucky/=10;
}
if(f) break;Lucky/=10;
}
if(f) break;Lucky/=10;
}
if(f) break;Lucky/=10;
}
if(f) break;Lucky/=10;
}
printf("%d\n",cnt);
if(cnt) {
sort(vis+1,vis+cnt+1);
for(int i=1;i<=cnt;++i) printf("%d\n",vis[i]);
}
return 0;
}