#include <stdio.h>
int n;
int a[10],count = 0;
int main(){
void dfs(int step,int sum);
void count_dfs(int p,int m);
scanf("%d",&n);
count_dfs(0,0);
printf("%d\n",count);
dfs(0,0);
return 0;
}
void count_dfs(int p,int m){
if(p == 10){
if( m == n ){
count++;
}
return;
}
for(int k = 1; k <= 3; k++){
a[p] = k;
count_dfs(p + 1 , m + k);
}
}
void dfs(int step,int sum){
if(step == 10){
if( sum == n ){
for(int i = 0; i < 10 ; i++){
printf("%d ",a[i]);
}
printf("\n");
return;
}
}
if(sum + (10 - step) * 1 > n || sum + (10 - step) * 3 < n){
return;
}
for(int i = 1; i <= 3; i++){
a[step] = i;
dfs(step + 1 , sum + i);
}
}