#include <bits/stdc++.h>
using namespace std;
const long long MD = (long long)1e9 + 7;
long long pow2(long long step) {
  if (step == 0) return 1;
  if (step % 2) return pow2(step - 1) * 2 % MD;
  long long q = pow2(step / 2);
  return q * q % MD;
}
void solve() {
  vector<int> v = {
      1,      2,       4,       6,       12,      16,      18,       30,
      60,     88,      106,     126,     520,     606,     1278,     2202,
      2280,   3216,    4252,    4422,    9688,    9940,    11212,    19936,
      21700,  23208,   44496,   86242,   110502,  132048,  216090,   756838,
      859432, 1257786, 1398268, 2976220, 3021376, 6972592, 13466916, 20996010};
  int n;
  cin >> n;
  cout << (pow2(v[n - 1]) + MD - 1) % MD << endl;
}
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(nullptr);
  int t = 1;
  for (int i = 0; i < t; i++) solve();
}

### Prompt

Please formulate a Cpp solution 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 MD = (long long)1e9 + 7;
long long pow2(long long step) {
  if (step == 0) return 1;
  if (step % 2) return pow2(step - 1) * 2 % MD;
  long long q = pow2(step / 2);
  return q * q % MD;
}
void solve() {
  vector<int> v = {
      1,      2,       4,       6,       12,      16,      18,       30,
      60,     88,      106,     126,     520,     606,     1278,     2202,
      2280,   3216,    4252,    4422,    9688,    9940,    11212,    19936,
      21700,  23208,   44496,   86242,   110502,  132048,  216090,   756838,
      859432, 1257786, 1398268, 2976220, 3021376, 6972592, 13466916, 20996010};
  int n;
  cin >> n;
  cout << (pow2(v[n - 1]) + MD - 1) % MD << endl;
}
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(nullptr);
  int t = 1;
  for (int i = 0; i < t; i++) solve();
}

```