#include <cstdio>
#include <cstring>
#define file_in "patrate2.in"
#define file_out "patrate2.out"
#define BASE 1000000000
#define Nmax 10001
int a[Nmax],b[Nmax],sol[Nmax],n,sol1[Nmax];
void citire()
{
int i,p,l,j;
char s[Nmax];
scanf("%s", s);
l = strlen(s);
//n=0;
for (i = 1; i <= l; i+=9)
{
++a[0];
for (j = 8; j >= 0; --j)
if (l - i-j>= 0)
a[a[0]] = a[a[0]] * 10 + s[l - i-j] - '0';
//n=n*10+s[i]-'0';
}
n=0;
i=0;
while(i<l)
{
n=n*10+s[i]-'0';
i++;
}
}
inline void MUL(int A[], int B[], int C[])
{
int i, j, t;
//memset(C, 0, sizeof(C));
for (i = 1; i <= A[0]; ++i)
{
t = 0;
for (j = 1; j <= B[0] || t; ++j, t /= BASE)
C[i + j - 1] = (t += C[i + j - 1] + A[i] * B[j]) % BASE;
if (i + j - 2 > C[0])
C[0] = i + j - 2;
}
//memcpy(A, C, sizeof(C));
}
inline void MUL1(int A[], int B[])
{
int i, j, t,C[Nmax];
memset(C, 0, sizeof(C));
for (i = 1; i <= A[0]; ++i)
{
t = 0;
for (j = 1; j <= B[0] || t; ++j, t /= BASE)
C[i + j - 1] = (t += C[i + j - 1] + A[i] * B[j]) % BASE;
if (i + j - 2 > C[0])
C[0] = i + j - 2;
}
memcpy(A, C, sizeof(C));
}
void mul(int A[], int b)
{
int i, t;
for (i = 1, t = 0; i <= A[0] || t; ++i, t /= BASE)
A[i] = (t += b * A[i]) % BASE;
A[0] = i - 1;
}
void scrie(int a[])
{
int i;
printf("%d", a[a[0]]);
for (i = a[0]-1; i >= 1; --i)
printf("%.09d", a[i]);
printf("\n");
}
int main()
{
int i;
freopen(file_in,"r",stdin);
freopen(file_out,"w",stdout);
citire();
sol[0]=sol[1]=1;
/*sol1[0]=1;sol1[1]=2;*/
for (i=1;i<=n*n; ++i)
mul(sol,2);
MUL(a,sol,b);
scrie(b);
//printf("%d", n);
fclose(stdin);
fclose(stdout);
return 0;
}