#include <bits/stdc++.h>
using namespace std;
template <class T>
int popcount(T n);
template <>
int popcount(unsigned int n) {
  return __builtin_popcount(n);
}
template <>
int popcount(int n) {
  return __builtin_popcount(n);
}
template <>
int popcount(unsigned long long n) {
  return __builtin_popcountll(n);
}
template <>
int popcount(long long n) {
  return __builtin_popcountll(n);
}
template <class T>
void max_swap(T& a, const T& b) {
  a = max(a, b);
}
template <class T>
void min_swap(T& a, const T& b) {
  a = min(a, b);
}
template <class T>
void sort(vector<T>& c) {
  sort(c.begin(), c.end());
}
template <class T>
void unique(vector<T>& c) {
  sort(c.begin(), c.end());
  c.erase(unique(c.begin(), c.end()), c.end());
}
template <class T, class U>
ostream& operator<<(ostream& os, pair<T, U>& p) {
  os << "( " << p.first << ", " << p.second << " )";
  return os;
}
template <class T>
string to_s(const T& a) {
  ostringstream os;
  os << a;
  return os.str();
}
template <class T>
T to_T(const string& s) {
  istringstream is(s);
  T res;
  is >> res;
  return res;
}
bool valid(int x, int y, int w, int h) {
  return 0 <= x && x < w && 0 <= y && y < h;
}
template <class T>
void print(T a, int n, const string& deli = " ", int br = 1) {
  for (int i = 0; i < n; ++i) {
    cout << a[i];
    if (i + 1 != n) cout << deli;
  }
  while (br--) cout << endl;
}
template <class T>
void print(const T& c, const string& deli = " ", int br = 1) {
  for (__typeof__((c).begin()) it = (c).begin(); it != (c).end(); ++it) {
    cout << *it;
    if (++it != c.end()) cout << deli;
    --it;
  }
  while (br--) cout << endl;
}
template <class T>
void print2d(T a, int w, int h, int width = -1, int br = 1) {
  for (int i = 0; i < h; ++i) {
    for (int j = 0; j < w; ++j) {
      if (width != -1) cout.width(width);
      cout << a[i][j] << ' ';
    }
    cout << endl;
  }
  while (br--) cout << endl;
}
template <class T>
void input(T& a, int n) {
  for (int i = 0; i < n; ++i) cin >> a[i];
}
template <class T, class U>
void input(T& a, U& b, int n) {
  for (int i = 0; i < n; ++i) cin >> a[i] >> b[i];
}
const int dx[] = {0, 1, 0, -1};
const int dy[] = {1, 0, -1, 0};
const double PI = acos(-1.0);
const int mod = 1000000007;
int main() {
  int t[] = {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};
  int n;
  cin >> n;
  int e = t[n - 1] - 1;
  int res = 1;
  for (int i = 0; i < e; ++i) (res *= 2) %= mod;
  res = (res - 1 + mod) % mod;
  cout << res << endl;
}
