#include <bits/stdc++.h>
using namespace std;
long long MOD = 1e9 + 7;
int N;
struct st {
  long long as[1];
  inline st() {
    for (int i = 0; i < 1; i++) as[i] = 0;
  }
  st(int a) {
    for (int i = 0; i < 1; i++) as[i] = 0;
    as[0] = a;
  }
  inline bool operator<(const st& o) const {
    for (int i = 0; i >= 0; i--) {
      if (as[i] < o.as[i]) {
        return true;
      }
      if (as[i] > o.as[i]) {
        return false;
      }
    }
    return false;
  }
  inline st operator+(st o) {
    st n = st();
    long long ov = 0;
    for (int i = 0; i < 1; i++) {
      n.as[i] = as[i] + o.as[i] + ov;
      ov = n.as[i] / MOD;
      n.as[i] %= MOD;
    }
    return n;
  }
  inline st operator+(long long o) {
    st n = st();
    n.as[0] = as[0] + o;
    long long ov = n.as[0] / MOD;
    for (int i = 1; i < 1; i++) {
      n.as[i] = as[i] + ov;
      ov = n.as[i] / MOD;
      n.as[i] %= MOD;
    }
    return n;
  }
};
long long memo[2][2000][2];
long long memo2[2][2000][2];
long long& dp(int pos, int open, int state) {
  return memo[pos % 2][open][state];
}
int main() {
  cin >> N;
  for (int pos = 1; pos <= 2 * N; pos++) {
    for (int open = 0; open <= N && open <= pos; open++) {
      for (int state = 0; state < 2; state++) {
        if (state == 0) {
          if (open) {
            if (pos - 1 >= open + 1) {
              memo[pos % 2][open][state] =
                  dp(pos - 1, open - 1, 0) + dp(pos - 1, open + 1, 1) + 1;
            } else {
              memo[pos % 2][open][state] = dp(pos - 1, open - 1, 1) + 1;
            }
          } else {
            memo[pos % 2][open][state] = dp(pos - 1, open + 1, 1) + 1;
          }
        } else {
          if (open) {
            if (open + 1 <= pos - 1) {
              memo[pos % 2][open][state] =
                  dp(pos - 1, open - 1, 0) + dp(pos - 1, open + 1, 0);
            } else {
              memo[pos % 2][open][state] = dp(pos - 1, open - 1, 0);
            }
          } else {
            memo[pos % 2][open][state] = dp(pos - 1, open + 1, 0);
          }
        }
        memo[pos % 2][open][state] %= MOD;
      }
    }
  }
  cout << memo[0][0][0];
  return 0;
}
