#include <bits/stdc++.h>
using namespace std;
const long long N = 3e3 + 10;
const long long mod = 1e9 + 7;
long long dp[N][N][2], n;
long long dpCall(long long open, long long close, long long prevtaken) {
  if (open + close > 2 * n) return 0;
  if (dp[open][close][prevtaken] != -1) return dp[open][close][prevtaken];
  long long x = 0;
  if (open < n && open - close > 0) {
    if (prevtaken) {
      x = dpCall(open + 1, close, 0);
      x += dpCall(open, close + 1, 0);
    } else {
      long long tx = 1 + dpCall(open + 1, close, 1);
      tx += dpCall(open, close + 1, 0);
      long long ty = dpCall(open + 1, close, 0);
      ty += 1 + dpCall(open, close + 1, 1);
      x = max(tx, ty);
    }
  } else if (open < n) {
    if (prevtaken)
      x = dpCall(open + 1, close, 0);
    else
      x = 1 + dpCall(open + 1, close, 1);
  } else if (open - close > 0) {
    if (prevtaken)
      x = dpCall(open, close + 1, 0);
    else
      x = 1 + dpCall(open, close + 1, 1);
  }
  return dp[open][close][prevtaken] = (x % mod);
}
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(nullptr);
  cin >> n;
  for (long long i = 0; i < N; ++i) {
    for (long long j = 0; j < N; ++j) {
      for (long long k = 0; k < 2; ++k) dp[i][j][k] = -1;
    }
  }
  cout << dpCall(0, 0, 0) << endl;
}
