#include <iostream>
#include <algorithm>
using namespace std;
const int N(100);
struct bign{
int num[N];
};
bign f[200];
void dp(bign &x,bign &y)
{
y.num[1]+=1;
for(int i=1;i<=y.num[0];i++)
y.num[i]*=2;
for(int i=1;i<=y.num[0];i++)
{
y.num[i+1]+=y.num[i]/10;
y.num[i]%=10;
}
if(y.num[y.num[0]+1])
y.num[0]++;
copy(y.num,y.num+y.num[0]+1,x.num);
}
int main()
{
int n;
cin>>n;
for(int i=0;i<N;i++)
{
fill(f[i].num,f[i].num+N,0);
f[i].num[0]=1;
}
for(int i=1;i<=n;i++)
dp(f[i],f[i-1]);
for(int i=f[n].num[0];i>=1;i--)
cout<<f[n].num[i];
cout<<endl;
}
/**************************************************************
Problem: 2271
User: admin
Language: C++
Result: Accepted
Time:47 ms
Memory:2152 kb
****************************************************************/