#include<bits/stdc++.h>
using namespace std;
void carry(vector<int>&a)
{
int i;
for(i=0;i<a.size();i++)
{
if(a[i]>=10)
{
if(i+1<a.size())
a[i+1]+=a[i]/10;
else
a.push_back(a[i]/10);
a[i]%=10;
}
}
return;
}
vector<int> add(vector<int>a,vector<int>b)
{
int i;
vector<int>c;
for(i=0;i<a.size();i++)
c.push_back(a[i]);
for(i=0;i<b.size();i++)
{
if(i<c.size())
c[i]+=b[i];
else
c.push_back(b[i]);
}
carry(c);
return c;
}
vector<int> mul(vector<int>a,int b)
{
int i;
vector<int>c;
for(i=0;i<a.size();i++)
{
c.push_back(a[i]*b);
}
carry(c);
return c;
}
vector<int> div(vector<int>a,int b)
{
int i;
int tmp=0;
vector<int>c;
i=a.size()-1;
if(a[i]<b)
{
tmp=a[i];
i--;
}
for(;i>=0;i--)
{
tmp*=10;
tmp+=a[i];
c.push_back(tmp/b);
tmp%=b;
}
reverse(c.begin(),c.end());
return c;
}
void display(vector<int>a)
{
int i;
for(i=a.size()-1;i>=0;i--)
{
printf("%d",a[i]);
}
printf("\n");
return;
}
//[M mod 5][2^k mod 5]
const int table[5][5]={{0,5,5,5,5},
{0,9,7,3,1},
{0,3,9,1,7},
{0,7,1,9,3},
{0,1,3,7,9}};
int main()
{
int i,j;
vector<int>M(1,0);
vector<int>two(1,1);
vector<int>ans;
int n;
scanf("%d",&n);
for(i=0;i<n;i++)
{
// printf("calculating on %dth...\n",i);
int X=table[ M[0]%5 ][ two[0]%5 ];
M = div( add( mul( two, X), M) , 5);
two=mul(two,2);
// printf("%d\n",X);
ans.push_back(X);
// display(M);
// display(two);
// system("PAUSE");
}
// printf("ans=");
display(ans);
return 0;
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KCnVzaW5nIG5hbWVzcGFjZSBzdGQ7Cgp2b2lkIGNhcnJ5KHZlY3RvcjxpbnQ+JmEpCnsKICAgIGludCBpOwogICAgZm9yKGk9MDtpPGEuc2l6ZSgpO2krKykKICAgIHsKICAgICAgICBpZihhW2ldPj0xMCkKICAgICAgICB7CiAgICAgICAgICAgIGlmKGkrMTxhLnNpemUoKSkKICAgICAgICAgICAgICAgIGFbaSsxXSs9YVtpXS8xMDsKICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgYS5wdXNoX2JhY2soYVtpXS8xMCk7CiAgICAgICAgICAgIGFbaV0lPTEwOwogICAgICAgIH0KICAgIH0KICAgIHJldHVybjsKfQoKdmVjdG9yPGludD4gYWRkKHZlY3RvcjxpbnQ+YSx2ZWN0b3I8aW50PmIpCnsKICAgIGludCBpOwogICAgdmVjdG9yPGludD5jOwogICAgZm9yKGk9MDtpPGEuc2l6ZSgpO2krKykKICAgICAgICBjLnB1c2hfYmFjayhhW2ldKTsKCiAgICBmb3IoaT0wO2k8Yi5zaXplKCk7aSsrKQogICAgewogICAgICAgIGlmKGk8Yy5zaXplKCkpCiAgICAgICAgICAgIGNbaV0rPWJbaV07CiAgICAgICAgZWxzZQogICAgICAgICAgICBjLnB1c2hfYmFjayhiW2ldKTsKICAgIH0KICAgIGNhcnJ5KGMpOwogICAgcmV0dXJuIGM7Cn0KCnZlY3RvcjxpbnQ+IG11bCh2ZWN0b3I8aW50PmEsaW50IGIpCnsKICAgIGludCBpOwogICAgdmVjdG9yPGludD5jOwogICAgZm9yKGk9MDtpPGEuc2l6ZSgpO2krKykKICAgIHsKICAgICAgICBjLnB1c2hfYmFjayhhW2ldKmIpOwogICAgfQogICAgY2FycnkoYyk7CiAgICByZXR1cm4gYzsKfQoKdmVjdG9yPGludD4gZGl2KHZlY3RvcjxpbnQ+YSxpbnQgYikKewogICAgaW50IGk7CiAgICBpbnQgdG1wPTA7CiAgICB2ZWN0b3I8aW50PmM7CiAgICBpPWEuc2l6ZSgpLTE7CiAgICBpZihhW2ldPGIpCiAgICB7CiAgICAgICAgdG1wPWFbaV07CiAgICAgICAgaS0tOwogICAgfQogICAgZm9yKDtpPj0wO2ktLSkKICAgIHsKICAgICAgICB0bXAqPTEwOwogICAgICAgIHRtcCs9YVtpXTsKICAgICAgICBjLnB1c2hfYmFjayh0bXAvYik7CiAgICAgICAgdG1wJT1iOwogICAgfQogICAgcmV2ZXJzZShjLmJlZ2luKCksYy5lbmQoKSk7CiAgICByZXR1cm4gYzsKfQoKdm9pZCBkaXNwbGF5KHZlY3RvcjxpbnQ+YSkKewogICAgaW50IGk7CiAgICBmb3IoaT1hLnNpemUoKS0xO2k+PTA7aS0tKQogICAgewogICAgICAgIHByaW50ZigiJWQiLGFbaV0pOwogICAgfQogICAgcHJpbnRmKCJcbiIpOwogICAgcmV0dXJuOwp9Ci8vW00gbW9kIDVdWzJeayBtb2QgNV0KY29uc3QgaW50IHRhYmxlWzVdWzVdPXt7MCw1LDUsNSw1fSwKICAgICAgICAgICAgICAgICAgICAgICB7MCw5LDcsMywxfSwKICAgICAgICAgICAgICAgICAgICAgICB7MCwzLDksMSw3fSwKICAgICAgICAgICAgICAgICAgICAgICB7MCw3LDEsOSwzfSwKICAgICAgICAgICAgICAgICAgICAgICB7MCwxLDMsNyw5fX07CgppbnQgbWFpbigpCnsKICAgIGludCBpLGo7CgogICAgdmVjdG9yPGludD5NKDEsMCk7CiAgICB2ZWN0b3I8aW50PnR3bygxLDEpOwogICAgdmVjdG9yPGludD5hbnM7CiAgICBpbnQgbjsKICAgIHNjYW5mKCIlZCIsJm4pOwogICAgZm9yKGk9MDtpPG47aSsrKQogICAgewovLyAgICAgICAgcHJpbnRmKCJjYWxjdWxhdGluZyBvbiAlZHRoLi4uXG4iLGkpOwogICAgICAgIGludCBYPXRhYmxlWyBNWzBdJTUgXVsgdHdvWzBdJTUgXTsKICAgICAgICBNID0gZGl2KCBhZGQoIG11bCggdHdvLCBYKSwgTSkgLCA1KTsKICAgICAgICB0d289bXVsKHR3bywyKTsKLy8gICAgICAgIHByaW50ZigiJWRcbiIsWCk7CiAgICAgICAgYW5zLnB1c2hfYmFjayhYKTsKLy8gICAgICAgIGRpc3BsYXkoTSk7Ci8vICAgICAgICBkaXNwbGF5KHR3byk7Ci8vICAgICAgICBzeXN0ZW0oIlBBVVNFIik7CiAgICB9Ci8vICAgIHByaW50ZigiYW5zPSIpOwogICAgZGlzcGxheShhbnMpOwoKICAgIHJldHVybiAwOwp9Cg==