#include <bits/stdc++.h>
using namespace std;
int setbit(int n, int pos) { return n = n | (1 << pos); }
int resetbit(int n, int pos) { return n = n & ~(1 << pos); }
bool isOn(int n, int pos) { return n & (1 << pos) ? true : false; }
int bitcount(int n) { return n ? bitcount(n & (n - 1)) + 1 : 0; }
template <class T>
inline T bigmod(T a, T b, T M) {
  long long ret = 1;
  for (; b > 0; b >>= 1) {
    if (b & 1) ret = (ret * a) % M;
    a = (a * a) % M;
  }
  return (T)ret;
}
template <class T>
inline T gcd(T a, T b) {
  return b ? gcd(b, a % b) : a;
}
template <class T>
inline T lcm(T a, T b) {
  return (a / gcd(a, b)) * b;
}
int arr[45] = {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};
int main() {
  int n;
  cin >> n;
  cout << bigmod((long long)2, (long long)arr[n - 1] - 1, (long long)1e9 + 7) -
              1
       << "\n";
  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;
int setbit(int n, int pos) { return n = n | (1 << pos); }
int resetbit(int n, int pos) { return n = n & ~(1 << pos); }
bool isOn(int n, int pos) { return n & (1 << pos) ? true : false; }
int bitcount(int n) { return n ? bitcount(n & (n - 1)) + 1 : 0; }
template <class T>
inline T bigmod(T a, T b, T M) {
  long long ret = 1;
  for (; b > 0; b >>= 1) {
    if (b & 1) ret = (ret * a) % M;
    a = (a * a) % M;
  }
  return (T)ret;
}
template <class T>
inline T gcd(T a, T b) {
  return b ? gcd(b, a % b) : a;
}
template <class T>
inline T lcm(T a, T b) {
  return (a / gcd(a, b)) * b;
}
int arr[45] = {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};
int main() {
  int n;
  cin >> n;
  cout << bigmod((long long)2, (long long)arr[n - 1] - 1, (long long)1e9 + 7) -
              1
       << "\n";
  return 0;
}

```