#include <bits/stdc++.h>
using namespace std;
using ll = long long;
const ll N = 1e6 + 5, mod = 1e9 + 7;
template <class T, class... Ts>
int add(T f) {
  return f;
}
template <class T, class... Ts>
int add(T f, Ts... ts) {
  return (f + add(ts...)) % mod;
}
template <class T, class... Ts>
int sub(T f) {
  return f;
}
template <class T, class... Ts>
int sub(T f, Ts... ts) {
  return (f - sub(ts...) + 1ll * mod * mod) % mod;
}
template <class T, class... Ts>
int mul(T f) {
  return f;
}
template <class T, class... Ts>
int mul(T f, Ts... ts) {
  return (1ll * f * mul(ts...)) % mod;
}
int binpow(ll n, ll k) {
  int ans = 1;
  while (k) {
    if (k & 1) ans = mul(ans, n);
    n = mul(n, n), k >>= 1;
  }
  return ans;
}
int z;
vector<int> v = {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, 42643801, 43112609};
int32_t main() {
  cin.tie(0)->sync_with_stdio(0);
  cin >> z;
  cout << sub(binpow(2, v[z - 1] - 1), 1);
}
