#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
****************************************************************/