#include <iostream>
#include <cmath>
using namespace std;
void TooLargeNumPow(int n, int arr[]) // 2의 21승 이상인 경우
{
arr[0] = 2;
int carry = 0; // carry가 1이 되면 자리 올림
for (int i = 0; i < n - 1; i++)
{
if (i == 0)
arr[i] *= 2;
for (int j = 0; j < i; j++)
{
arr[j] *= 2;
arr[j] += carry;
if (arr[j] >= 10) {
carry = 1;
arr[j] -= 10;
}
else
carry = 0;
}
}
arr[0] -= 1; // 1을 빼줌
int start = 99;
for (int i = 99; i > -1; i--)
{
if (arr[start] == 0) //시작부분을 구함
{
start--;
continue;
}
cout << arr[i];
}
}
void Hanoi(int n, int source, int middle, int destination) //전형적인 하노이 알고리즘
{
if (n == 1)
{
cout << source << " " << destination << "\n";
return;
}
Hanoi(n - 1, source, destination, middle);
cout << source << " " << destination << "\n";
Hanoi(n - 1, middle, source, destination);
}
int main()
{
//혹시나 계산이 느려질까봐
ios_base::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
//시작부분
int arr[100] = { 0 };
int n;
cin >> n;
if (n <= 20) {
cout << pow(2, n) - 1 << "\n";
//Hanoi(n, 1, 2, 3);
}
else {
TooLargeNumPow(n, arr);
}
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8Y21hdGg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgoKdm9pZCBUb29MYXJnZU51bVBvdyhpbnQgbiwgaW50IGFycltdKSAvLyAy7J2YIDIx7Iq5IOydtOyDgeyduCDqsr3smrAKewoJYXJyWzBdID0gMjsKCWludCBjYXJyeSA9IDA7IC8vIGNhcnJ56rCAIDHsnbQg65CY66m0IOyekOumrCDsmKzrprwKCWZvciAoaW50IGkgPSAwOyBpIDwgbiAtIDE7IGkrKykKCXsKCQlpZiAoaSA9PSAwKQoJCQlhcnJbaV0gKj0gMjsKCQlmb3IgKGludCBqID0gMDsgaiA8IGk7IGorKykKCQl7CgkJCWFycltqXSAqPSAyOwoJCQlhcnJbal0gKz0gY2Fycnk7CgkJCWlmIChhcnJbal0gPj0gMTApIHsKCQkJCWNhcnJ5ID0gMTsKCQkJCWFycltqXSAtPSAxMDsKCQkJfQoJCQllbHNlCgkJCQljYXJyeSA9IDA7CgkJfQoJfQoKCWFyclswXSAtPSAxOyAvLyAx7J2EIOu5vOykjAoKCWludCBzdGFydCA9IDk5OwoJZm9yIChpbnQgaSA9IDk5OyBpID4gLTE7IGktLSkKCXsKCQlpZiAoYXJyW3N0YXJ0XSA9PSAwKSAvL+yLnOyekeu2gOu2hOydhCDqtaztlagKCQl7CgkJCXN0YXJ0LS07CgkJCWNvbnRpbnVlOwoJCX0KCgkJY291dCA8PCBhcnJbaV07Cgl9Cn0Kdm9pZCBIYW5vaShpbnQgbiwgaW50IHNvdXJjZSwgaW50IG1pZGRsZSwgaW50IGRlc3RpbmF0aW9uKSAvL+yghO2YleyggeyduCDtlZjrhbjsnbQg7JWM6rOg66as7KaYCnsKCWlmIChuID09IDEpCgl7CgkJY291dCA8PCBzb3VyY2UgPDwgIiAiIDw8IGRlc3RpbmF0aW9uIDw8ICJcbiI7CgkJcmV0dXJuOwoJfQoKCUhhbm9pKG4gLSAxLCBzb3VyY2UsIGRlc3RpbmF0aW9uLCBtaWRkbGUpOwoJY291dCA8PCBzb3VyY2UgPDwgIiAiIDw8IGRlc3RpbmF0aW9uIDw8ICJcbiI7CglIYW5vaShuIC0gMSwgbWlkZGxlLCBzb3VyY2UsIGRlc3RpbmF0aW9uKTsKCn0KaW50IG1haW4oKQp7CiAgICAvL+2YueyLnOuCmCDqs4TsgrDsnbQg64qQ66Ck7KeI6rmM67SQCglpb3NfYmFzZTo6c3luY193aXRoX3N0ZGlvKGZhbHNlKTsKCWNpbi50aWUoTlVMTCk7Cgljb3V0LnRpZShOVUxMKTsKICAgIAogICAgLy/si5zsnpHrtoDrtoQKCWludCBhcnJbMTAwXSA9IHsgMCB9OwoJaW50IG47CgljaW4gPj4gbjsKCWlmIChuIDw9IDIwKSB7CgkJY291dCA8PCBwb3coMiwgbikgLSAxIDw8ICJcbiI7CgkJLy9IYW5vaShuLCAxLCAyLCAzKTsKCX0KCWVsc2UgewoJCVRvb0xhcmdlTnVtUG93KG4sIGFycik7Cgl9Cgp9Cg==