#include <bits/stdc++.h>
using namespace std;
unsigned long long a[] = {
    2,         4,         16,        64,        4096,      65536,     262144,
    73741817,  536396504, 140130951, 487761806, 319908071, 106681875, 373391777,
    317758024, 191994804, 416292237, 110940210, 599412199, 383601261, 910358879,
    532737551, 348927937, 923450986, 470083778, 642578562, 428308067, 485739299,
    419990028, 287292017, 202484168, 389339972, 848994101, 273206870, 853092283,
    411696553, 876153854, 90046025,  828945524, 697988360};
int main() {
  int n;
  cin >> n;
  cout << a[n - 1] - 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>
using namespace std;
unsigned long long a[] = {
    2,         4,         16,        64,        4096,      65536,     262144,
    73741817,  536396504, 140130951, 487761806, 319908071, 106681875, 373391777,
    317758024, 191994804, 416292237, 110940210, 599412199, 383601261, 910358879,
    532737551, 348927937, 923450986, 470083778, 642578562, 428308067, 485739299,
    419990028, 287292017, 202484168, 389339972, 848994101, 273206870, 853092283,
    411696553, 876153854, 90046025,  828945524, 697988360};
int main() {
  int n;
  cin >> n;
  cout << a[n - 1] - 1 << endl;
  return 0;
}

```