深度优先搜索
#include <iostream>
#include <cstdio>
using namespace std;
int n;
int tot,ans;
short int a[11],d[10000][11];
void print(){
for(int i=1;i<=10;++i){
d[ans][i]=a[i];
}
}
void search(int cs){
for(int i=1;i<=3;++i){
a[cs]=i;
tot+=a[cs];
if(cs==10){
if(tot==n){
++ans;
print();
}
}
else{
search(cs+1);
}
//cout<<"cs:"<<cs<<" "<<"i:"<<i<<" "<<"tot:"<<tot<<" "<<"ans:"<<ans<<'\n';
tot-=a[cs];
}
}
int main(){
cin>>n;
search(1);
cout<<ans<<'\n';
for(int i=1;i<=ans;++i){
for(int j=1;j<=10;++j){
cout<<d[i][j]<<" ";
}
cout<<'\n';
}
return 0;
}