#include <bits/stdc++.h>
long long int ans[50] = {
    1,       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};
long long int pow(long long int a, long long int k, long long int mod) {
  long long int ans = 1, t = a;
  for (; k; k /= 2) {
    if (k & 1) ans = ans * t % mod;
    t = t * t % mod;
  }
  return ans;
}
void suru() {
  int n;
  scanf("%d", &n);
  printf("%I64d\n", (pow(2, ans[n] - 1, 1000000007) + 1000000006) % 1000000007);
}
void truli() {}
void sutru() {}
int main() {
  srand(514);
  truli();
  suru();
  sutru();
  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>
long long int ans[50] = {
    1,       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};
long long int pow(long long int a, long long int k, long long int mod) {
  long long int ans = 1, t = a;
  for (; k; k /= 2) {
    if (k & 1) ans = ans * t % mod;
    t = t * t % mod;
  }
  return ans;
}
void suru() {
  int n;
  scanf("%d", &n);
  printf("%I64d\n", (pow(2, ans[n] - 1, 1000000007) + 1000000006) % 1000000007);
}
void truli() {}
void sutru() {}
int main() {
  srand(514);
  truli();
  suru();
  sutru();
  return 0;
}

```