记录
#include<bits/stdc++.h>
using namespace std;
string mul(string x,string y){
string ans;
int a[1000005]={},b[1000005]={},c[2000005]={};
int la=x.size(),lb=y.size();
for(int i=1;i<=la;i++){
a[i]=x[la-i]-'0';
}
for(int i=1;i<=lb;i++){
b[i]=y[lb-i]-'0';
}
for(int i=1;i<=la;i++){
for(int j=1;j<=lb;j++){
c[i+j-1]+=a[i]*b[j];
}
}
int lc=la+lb;
for(int i=1;i<=lc;i++){
c[i+1]+=c[i]/10;
c[i]%=10;
}
while(c[lc]=='0'&&lc>1)lc--;
for(int i=lc;i>=1;i--){
ans.push_back(c[i]+'0');
}
return ans;
}
string qpow(long long p){
string ans="1",a="2";
while(p){
if(p&1)ans=mul(ans,a);
a=mul(a,a);
p>>=1;
}
return ans;
}
int main(){
ios::sync_with_stdio(false);
cin.tie(nullptr),cout.tie(nullptr);
long long p;
cin>>p;
string s=qpow(p);
cout<<int(log10(2)*p+1)<<'\n';
if(s.size()<=500){
int len=500-s.size();
for(int i=1;i<=len;i++)s="0"+s;
}else{
s=s.substr(s.size()-500,500);
}
for(int i=0;i<s.size();i++){
if(i&&i%50==0){
cout<<'\n';
}
cout<<s[i];
}
return 0;
}