90分
#include<bits/stdc++.h>
using namespace std;
short n,a[8300],c[8300][8300],cnt,ans;
bool b[8300][5];
void dfs(int z){
int k;
if(z==11){
if(cnt==n){
ans++;
for(int i=1;i<=10;i++)c[ans][i]=a[i];
}
return;
}
for(int i=1;i<=3;i++){
if(cnt+i<=n&&b[z][i]==0){
cnt+=i;
b[z][i]=1;
k=a[z];
a[z]=i;
dfs(z+1);
cnt-=i;
b[z][i]=0;
a[z]=k;
}
}
}
int main(){
cin>>n;
if(n<10||n>30){cout<<0;return 0;}
dfs(1);
cout<<ans<<endl;
for(int i=1;i<=ans;i++){
for(int j=1;j<=10;j++)cout<<c[i][j]<<' ';
cout<<endl;
}
return 0;
}