#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int maxn=210;
int f[maxn][maxn],n,siz[maxn];
int main(){
scanf("%d",&n);
f[1][1]=2; siz[1]=1;
for(int i=2;i<=n;i++){
for(int j=1;j<=siz[i-1];j++){
f[i-1][j]*=2;
}
for(int j=1;j<=siz[i-1];j++){
f[i-1][j+1]+=f[i-1][j]/10;
f[i-1][j]%=10;
}
while(f[i-1][siz[i-1]+1]>0){
f[i-1][siz[i-1]+2]+=f[i-1][siz[i-1]+1]/10;
f[i-1][siz[i-1]+1]%=10;
++siz[i-1];
}
for(int j=1;j<=siz[i-1];j++){
f[i][j]=f[i-1][j];
}
siz[i]=siz[i-1];
f[i][1]+=2;
for(int j=1;j<=siz[i];j++){
f[i][j+1]+=f[i][j]/10;
f[i][j]%=10;
}
while(f[i][siz[i]+1]>0){
f[i][siz[i]+2]+=f[i][siz[i]+1]/10;
f[i][siz[i]+1]%=10;
++siz[i];
}
}
for(int i=siz[n];i>=1;i--){
cout<<f[n][i];
}
cout<<endl;
return 0;
}
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int maxn=210;
int f[maxn][maxn],n,siz[maxn];
int main(){
scanf("%d",&n);
f[1][1]=2; siz[1]=1;
for(int i=2;i<=n;i++){
for(int j=1;j<=siz[i-1];j++){
f[i-1][j]*=2;
}
for(int j=1;j<=siz[i-1];j++){
f[i-1][j+1]+=f[i-1][j]/10;
f[i-1][j]%=10;
}
while(f[i-1][siz[i-1]+1]>0){
f[i-1][siz[i-1]+2]+=f[i-1][siz[i-1]+1]/10;
f[i-1][siz[i-1]+1]%=10;
++siz[i-1];
}
for(int j=1;j<=siz[i-1];j++){
f[i][j]=f[i-1][j];
}
siz[i]=siz[i-1];
f[i][1]+=2;
for(int j=1;j<=siz[i];j++){
f[i][j+1]+=f[i][j]/10;
f[i][j]%=10;
}
while(f[i][siz[i]+1]>0){
f[i][siz[i]+2]+=f[i][siz[i]+1]/10;
f[i][siz[i]+1]%=10;
++siz[i];
}
}
for(int i=siz[n];i>=1;i--){
cout<<f[n][i];
}
cout<<endl;
return 0;
}