#include <bits/stdc++.h>
using namespace std;
const long long INF = LLONG_MAX, MOD = 1e9 + 7;
const int L = 17, N = 1 << L;
long long n;
long long dpf[2001][2001], dpg[2001][2001];
bool ok(long long l, long long k) { return l >= 0 && l <= k && k >= 0; }
long long g(long long l, long long k);
long long f(long long l, long long k) {
  long long &ans = dpf[l + k][k];
  if (ans != -1) {
    return ans;
  }
  ans = g(l + 1, k - 1) + g(l - 1, k - 1);
  ans %= MOD;
  return ans;
}
long long g(long long l, long long k) {
  if (!ok(l, k)) {
    return 0;
  }
  long long &ans = dpg[l + k][k];
  if (ans != -1) {
    return ans;
  }
  bool p1 = ok(l + 1, k - 1), p2 = ok(l - 1, k - 1);
  if (p1 && p2) {
    ans = 1 + max(g(l + 1, k - 1) + f(l - 1, k - 1),
                  f(l + 1, k - 1) + g(l - 1, k - 1));
  } else if (p1 && !p2) {
    ans = 1 + f(l + 1, k - 1);
  } else if (!p1 && p2) {
    ans = 1 + f(l - 1, k - 1);
  } else {
    ans = 0;
  }
  ans %= MOD;
  return ans;
}
int main() {
  ios::sync_with_stdio(false);
  cin >> n;
  memset(dpf, -1, sizeof(dpf));
  memset(dpg, -1, sizeof(dpg));
  dpf[0][0] = dpg[0][0] = 0;
  cout << g(0, n * 2) << endl;
  return 0;
}
