//计算 2 的 N次方。N ≤ 10000
#include <bits/stdc++.h>
using namespace std;
const int N = 3100;//lgx + 1算位数 最大位数lg2^10000 = 10000 * lg2 ≈ 10000 * 0.3010 = 3010;
int main()
{
int a[N] = {1};
//开一个数组存结果,第一个数是1,其余数全为0;
//存结果的时候是倒着存的,因此还要倒着输出
//比如11122 * 2 = 22244;个位数存a[0],十位数存a[1],以此类推
int n;
cin >> n;
int m = 1;//存位数
for (int i = 0; i < n; i++) //循环n次
{
int t = 0;//存储进位;一开始没有进位
for (int j = 0; j < m; j++) //循环每一个位数,以此来更新a[N]数组中的值
{
t += a[j] * 2;//先用t存储乘2后的结果
a[j] = t % 10;//取个位数更新a[j]
t /= 10;//判断是否进位;若t = 0, 不进位;若t = 1,进1位
}
//每一位最大数字为9,乘2后最大为18,故t / 10最大只能是1,表示进了一位
if (t) a[m++] = 1; //如果t = 1则进一位
}
for (int i = m - 1; i >= 0; i--) cout << a[i];//将结果倒着输出
return 0;
}