# include<stdio.h>
int b[10001][10];
int main()
{
int a[11]={0,1,1,1,1,1,1,1,1,1,1};
int key;
int sum=0;
int j=10;
int count=0;
int n=0;
int x=1;
scanf("%d",&key);
//当原最高位满4进1,最高位发生变化,说明枚举结束
while(a[0]!=1){
int j=10;
int sum=0;
//计算该情况下总和
for(int i=1;i<11;i++)
sum+=a[i];
//总和与要求相等,记录该组解
if(sum==key){
count++;
x=1;
for(int i=0;i<10;i++){
b[n][i]=a[x];
x++;
}
n++;
}
//最后一位加1,满4进1
a[j]++;
while(a[j]==4)
{
a[j]=1;
a[--j]+=1;
}
}
printf("%d\n",count);
//输出
for(int i=0;i<n;i++)
{
for(int j=0;j<10;j++)
printf("%d",b[i][j]);
printf("\n");
}
return 0;
}