#include<stdio.h>
#include<string>
#include<iostream>
using namespace std;
string Two[997];
string Res[1000];
void Add(int pos)
{
string large=Two[pos-3],small=Res[pos-2];
int max=large.length();
int min=small.length();
string s,res;
int sum,carry=0;
for(int i=max-1;i>=(max-min);i--)
{
sum=carry+large[i]-'0'+small[i-(max-min)]-'0';
s[i]=sum%10+'0';
carry=sum/10;
}
for(int i=max-min-1;i>=0;i--)
{
sum=carry+large[i]-'0';
s[i]=sum%10+'0';
carry=sum/10;
}
if(carry==1)
res="1";
for(int i=0;i<max;i++)
res+=s[i];
Res[pos]=res;
return;
}
void Multiply(int pos)
{
string a=Two[pos-1];
int m=a.length();
string s,res;int c=0;
int sum,carry=0;
for(int i=m-1;i>=0;i--)
{
sum=(a[i]-'0')*2+carry;
s[c]=sum%10+'0';
carry=sum/10;
c++;
}
while(carry!=0)
{
s[c]=carry%10+'0';
carry/=10;
c++;
}
for(int i=c-1;i>=0;i--)
{
res+=s[i];
}
Two[pos]=res;
return;
}
int main()
{
Two[0]="1";
Two[1]="2";
for(int i=2;i<997;i++)
Multiply(i);
Res[1]="0";
Res[2]="1";
for(int i=3;i<1000;i++)
Add(i);
int num;
while(scanf("%d",&num))
{
cout<<Res[num]<<endl;
}
}
I2luY2x1ZGU8c3RkaW8uaD4KI2luY2x1ZGU8c3RyaW5nPgojaW5jbHVkZTxpb3N0cmVhbT4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKc3RyaW5nIFR3b1s5OTddOwpzdHJpbmcgUmVzWzEwMDBdOwp2b2lkIEFkZChpbnQgcG9zKQp7CgogICAgc3RyaW5nIGxhcmdlPVR3b1twb3MtM10sc21hbGw9UmVzW3Bvcy0yXTsKICAgIGludCBtYXg9bGFyZ2UubGVuZ3RoKCk7CiAgICBpbnQgbWluPXNtYWxsLmxlbmd0aCgpOwogICAgICAgc3RyaW5nIHMscmVzOwogICAgICAgaW50IHN1bSxjYXJyeT0wOwogICAgICAgZm9yKGludCBpPW1heC0xO2k+PShtYXgtbWluKTtpLS0pCiAgICAgICB7CiAgICAgICAgICAgc3VtPWNhcnJ5K2xhcmdlW2ldLScwJytzbWFsbFtpLShtYXgtbWluKV0tJzAnOwogICAgICAgICAgIHNbaV09c3VtJTEwKycwJzsKICAgICAgICAgICBjYXJyeT1zdW0vMTA7CiAgICAgICB9CiAgICAgICBmb3IoaW50IGk9bWF4LW1pbi0xO2k+PTA7aS0tKQogICAgICAgewogICAgICAgICAgIHN1bT1jYXJyeStsYXJnZVtpXS0nMCc7CiAgICAgICAgICAgc1tpXT1zdW0lMTArJzAnOwogICAgICAgICAgIGNhcnJ5PXN1bS8xMDsKICAgICAgIH0KICAgICAgIGlmKGNhcnJ5PT0xKQogICAgICAgcmVzPSIxIjsKICAgICAgIGZvcihpbnQgaT0wO2k8bWF4O2krKykKICAgICAgIHJlcys9c1tpXTsKICAgICAgIFJlc1twb3NdPXJlczsKICAgICAgIHJldHVybjsKfQp2b2lkIE11bHRpcGx5KGludCBwb3MpCnsKICAgIHN0cmluZyBhPVR3b1twb3MtMV07CiAgICBpbnQgbT1hLmxlbmd0aCgpOwogICAgc3RyaW5nIHMscmVzO2ludCBjPTA7CiAgICBpbnQgc3VtLGNhcnJ5PTA7CiAgICBmb3IoaW50IGk9bS0xO2k+PTA7aS0tKQogICAgewogICAgICAgIHN1bT0oYVtpXS0nMCcpKjIrY2Fycnk7CiAgICAgICAgc1tjXT1zdW0lMTArJzAnOwogICAgICAgIGNhcnJ5PXN1bS8xMDsKICAgICAgICBjKys7CiAgICB9CiAgICB3aGlsZShjYXJyeSE9MCkKICAgIHsKICAgICAgICBzW2NdPWNhcnJ5JTEwKycwJzsKICAgICAgICBjYXJyeS89MTA7CiAgICAgICAgYysrOwogICAgfQogICAgZm9yKGludCBpPWMtMTtpPj0wO2ktLSkKICAgIHsKICAgICAgICByZXMrPXNbaV07CiAgICB9CiAgICBUd29bcG9zXT1yZXM7CiAgICByZXR1cm47Cn0KaW50IG1haW4oKQp7CiAgICAgVHdvWzBdPSIxIjsKICAgICBUd29bMV09IjIiOwogICAgIGZvcihpbnQgaT0yO2k8OTk3O2krKykKICAgICBNdWx0aXBseShpKTsKICAgICBSZXNbMV09IjAiOwogICAgIFJlc1syXT0iMSI7CiAgICAgZm9yKGludCBpPTM7aTwxMDAwO2krKykKICAgICBBZGQoaSk7CiAgICAgaW50IG51bTsKICAgICB3aGlsZShzY2FuZigiJWQiLCZudW0pKQogICAgIHsKICAgICAgICAgY291dDw8UmVzW251bV08PGVuZGw7CiAgICAgfQp9