#include <bits/stdc++.h>
using namespace std;
long long mod = 1000000007;
long long gcd(long long a, long long b) {
  if (a < b) swap(a, b);
  if (a % b == 0) return b;
  return gcd(b, a % b);
}
long long lcm(long long a, long long b) {
  long long ret = a * b;
  long long u = gcd(a, b);
  return ret / u;
}
int main() {
  long long n;
  cin >> n;
  long long dp[n + 1][n + 1][2];
  for (int i = 0; i <= n; i++) {
    for (int j = 0; j <= n; j++) {
      for (int k = 0; k < 2; k++) dp[i][j][k] = 0;
    }
  }
  dp[1][0][1] = 1;
  for (int i = 1; i < 2 * n; i++) {
    for (int j = i;; j--) {
      if (2 * j < i) break;
      if (j < n) {
        dp[j + 1][i - j][0] += dp[j][i - j][1];
        dp[j + 1][i - j][0] %= mod;
        dp[j + 1][i - j][1] += dp[j][i - j][0];
        dp[j + 1][i - j][1] %= mod;
        if (j > i - j) {
          dp[j][i - j + 1][0] += dp[j][i - j][1] + dp[j][i - j][0];
          dp[j][i - j + 1][0] %= mod;
        }
      } else if (j == n) {
        dp[j][i - j + 1][0] += dp[j][i - j][1];
        dp[j][i - j + 1][0] %= mod;
        dp[j][i - j + 1][1] += dp[j][i - j][0];
        dp[j][i - j + 1][1] %= mod;
      }
    }
  }
  long long ans = 0;
  for (int i = 1; i <= n; i++) {
    for (int j = 0; j <= n; j++) {
      if (j > i) break;
      ans += dp[i][j][1];
      ans %= mod;
    }
  }
  cout << ans << endl;
}
