#include <bits/stdc++.h>
using namespace std;
const long long int M = 1e7 + 7;
const long long int mod = 1e9 + 7;
const long long int infi = LLONG_MAX;
long long int i, j, k, n, x, y, m, mymax = LLONG_MIN, mymin = LLONG_MAX, b, c,
                                   z, sum;
long long int flag[] = {
    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, 25964951,
    30402457, 32582657, 37156667};
int main() {
  scanf("%lld", &b);
  x = flag[b - 1] - 1;
  y = 1;
  while (x--) {
    y = (y * 2) % mod;
  }
  y = (y - 1 + mod) % mod;
  cout << y << endl;
  return 0;
}

### Prompt

Please create a solution in Cpp to the following problem:

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>
using namespace std;
const long long int M = 1e7 + 7;
const long long int mod = 1e9 + 7;
const long long int infi = LLONG_MAX;
long long int i, j, k, n, x, y, m, mymax = LLONG_MIN, mymin = LLONG_MAX, b, c,
                                   z, sum;
long long int flag[] = {
    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, 25964951,
    30402457, 32582657, 37156667};
int main() {
  scanf("%lld", &b);
  x = flag[b - 1] - 1;
  y = 1;
  while (x--) {
    y = (y * 2) % mod;
  }
  y = (y - 1 + mod) % mod;
  cout << y << endl;
  return 0;
}

```