#include<iostream>
#include<cstring>
using namespace std;
string cf(string n,string m){
int c[100005]={};
string ans="";
if(n=="0"||m=="0"){
return "0";
}
if(n[0]=='-'&&m[0]!='-'){
ans+="-";
n.erase(0,1);
}else if(n[0]!='-'&&m[0]=='-'){
ans+="-";
m.erase(0,1);
}else if(n[0]=='-'&&m[0]=='-'){
m.erase(0,1);
n.erase(0,1);
}
if(n.size()<m.size()){
swap(n,m);
}
for(int i=1;i<=m.size();i++){
for(int j=1;j<=n.size();j++){
int q=(m[i-1]-'0')*(n[j-1]-'0');
c[i+j-1]+=q;
}
}
// cout<<c[0]<<endl;
int l=m.size()+n.size();
// for(int i=1;i<l;i++){
// cout<<c[i]<<" ";
// }
// cout<<endl;
for(int i=l-1;i>0;i--){
c[i-1]+=c[i]/10;
c[i]%=10;
}
// for(int i=0;i<l;i++){
// cout<<c[i]<<' ';
// }
// cout<<endl;
if(c[0]>0){
int i=0;
while(i<=l&&c[i]==0){
i++;
}
if(i>l){
return "0";
}
for(;i<l;i++){
ans+=char(c[i]+'0');
}
}else{
int i=1;
while(i<=l&&c[i]==0){
i++;
}
if(i>l){
return "0";
}
for(int i=1;i<l;i++){
ans+=char(c[i]+'0');
}
}
return ans;
}
int cnt,q;
string k="1",a="2";
int main(){
int n;
cin>>n;
while(n){
if(n%2){
k=cf(k,a);
}
a=cf(a,a);
n>>=1;
}
k[k.size()-1]-=1;
cout<<k.size();
if(k.size()<500){
for(int i=0;i<500-k.size();i++){
if(i%50==0){
cout<<endl;
}
cout<<0;
cnt++;
}
for(int i=0;i<k.size();i++){
// cout<<1;
if((i+cnt)%50==0){
cout<<endl;
}
cout<<k[i];
}
}else{
for(int i=k.size()-500;i<k.size();i++){
// cout<<1;
if(q%50==0){
cout<<endl;
}
cout<<k[i];
q++;
}
}
return 0;
}