**#include<iostream>
#include<algorithm>
#include<cstring>
#include<cstdio>
using namespace std;
const int N = 20;
int n;
int arr[N]; //存临时方案
int res = 0; //存方案数
int mem[60000][N]; //存全部方案
//x表示当前枚举到哪一位。。。sum表示当前已经选了的调料质量总和
void dfs(int x, int sum)
{
if(sum > n) return ; //剪枝
if(x > 10){
if(sum == n){
res++;
for(int i = 1; i <= 10; i++){
mem[res][i] = arr[i];
}
}
return ;
}
for(int i = 1; i <= 3; i++){
arr[x] = i;
dfs(x + 1, sum + i);
arr[x] = 0;
}
}
int main()
{
cin >> n;
dfs(1,0);
cout << res << endl;
for(int i = 1; i <= res; i++){
for(int j = 1; j <= 10; j++){
cout << mem[i][j] << ' ';
}
cout << endl;
}
return 0;
}**