#include <bits/stdc++.h>
#include <unistd.h>
using namespace std;
typedef long long ll;
ll n,a[15],s;
queue<ll>q;
void dfs(ll x,ll y){
if(x==10&&y==n){
for(ll i=0;i<10;++i){
q.push(a[i]);
}
return;
}
if(y>=n)return;
for(ll i=1;i<=3;++i){
a[x]=i;
dfs(x+1,y+i);
a[x]=0;
}
}
int main() {
cin>>n;
dfs(0,0);
cout<<q.size()/10<<endl;
while(!q.empty()){
++s;
cout<<q.front()<<" ";
q.pop();
if(s==10){
cout<<endl;
s=0;
}
}
return 0;
}