#include <bits/stdc++.h>
using namespace std;
#pragma GCC diagnostic ignored "-Wmissing-declarations"
inline int safe_mul(const int x, const int y)
    __attribute__((warn_unused_result));
int const mod = 1e9 + 7;
inline int safe_mul(const int x, const int y) { return x * 1LL * y % mod; }
inline void safe_add(int& x, const int y) {
  x += y;
  if (x >= mod) x -= mod;
}
int const maxn = 1005;
int dp[maxn][2 * maxn];
bool us[maxn][2 * maxn];
int solve(const int bal, const int c0, const int c1) {
  if (dp[bal][c0 + c1] >= 0) return dp[bal][c0 + c1];
  int res = 0;
  bool can = false;
  if (c0 > 0) {
    safe_add(res, solve(bal + 1, c0 - 1, c1));
    can |= us[bal + 1][c0 + c1 - 1];
  }
  if (bal > 0 && c1 > 0) {
    safe_add(res, solve(bal - 1, c0, c1 - 1));
    can |= us[bal - 1][c0 + c1 - 1];
  }
  if (can) {
    safe_add(res, 1);
    us[bal][c0 + c1] = false;
  } else {
    us[bal][c0 + c1] = true;
  }
  return dp[bal][c0 + c1] = res;
}
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(0);
  for (int i = 0; i < maxn; ++i)
    for (int j = 0; j < 2 * maxn; ++j) dp[i][j] = -1, us[i][j] = false;
  int n;
  cin >> n;
  cout << solve(0, n, n) << endl;
}
