#include <bits/stdc++.h>
#pragma comment(linker, "/STACK:100000000,100000000")
using namespace std;
const long long inf = 1e18 + 7;
const long long mod = 1e9 + 7;
const long double eps = 1e-10;
const long double PI = 2 * acos(0.0);
const long double E = 2.71828;
const long long seed = 13331;
const long long size = 500005;
long long step[] = {2,       3,       5,        7,        13,      17,
                    19,      31,      61,       89,       107,     127,
                    521,     607,     1279,     2203,     2281,    3217,
                    4253,    4423,    9689,     9941,     11213,   19937,
                    21701,   23209,   44497,    86243,    110503,  132049,
                    216091,  756839,  859433,   1257787,  1398269, 2976221,
                    3021377, 6972593, 13466917, 20996011, 24036583};
int main(void) {
  long long n, a, rez = 1;
  cin >> a;
  if (a == 1) cout << a << endl, exit(0);
  n = step[a - 1] - 1;
  a = 2;
  while (n) {
    if (n & 1) rez = (rez * a) % mod;
    a = (a * a) % mod;
    n >>= 1;
  }
  cout << rez - 1 << endl;
  return 0;
}

### Prompt

Develop a solution in CPP to the problem described below:

Consider the following equation: 

<image> where sign [a] represents the integer part of number a.

Let's find all integer z (z > 0), for which this equation is unsolvable in positive integers. The phrase "unsolvable in positive integers" means that there are no such positive integers x and y (x, y > 0), for which the given above equation holds.

Let's write out all such z in the increasing order: z1, z2, z3, and so on (zi < zi + 1). Your task is: given the number n, find the number zn.

Input

The first line contains a single integer n (1 ≤ n ≤ 40).

Output

Print a single integer — the number zn modulo 1000000007 (109 + 7). It is guaranteed that the answer exists.

Examples

Input

1


Output

1

Input

2


Output

3

Input

3


Output

15

### Response

```cpp
#include <bits/stdc++.h>
#pragma comment(linker, "/STACK:100000000,100000000")
using namespace std;
const long long inf = 1e18 + 7;
const long long mod = 1e9 + 7;
const long double eps = 1e-10;
const long double PI = 2 * acos(0.0);
const long double E = 2.71828;
const long long seed = 13331;
const long long size = 500005;
long long step[] = {2,       3,       5,        7,        13,      17,
                    19,      31,      61,       89,       107,     127,
                    521,     607,     1279,     2203,     2281,    3217,
                    4253,    4423,    9689,     9941,     11213,   19937,
                    21701,   23209,   44497,    86243,    110503,  132049,
                    216091,  756839,  859433,   1257787,  1398269, 2976221,
                    3021377, 6972593, 13466917, 20996011, 24036583};
int main(void) {
  long long n, a, rez = 1;
  cin >> a;
  if (a == 1) cout << a << endl, exit(0);
  n = step[a - 1] - 1;
  a = 2;
  while (n) {
    if (n & 1) rez = (rez * a) % mod;
    a = (a * a) % mod;
    n >>= 1;
  }
  cout << rez - 1 << endl;
  return 0;
}

```