#include <bits/stdc++.h>
using namespace std;
int n;
int cnt;
bool vis[2010][2010][2];
pair<bool, long long> dp[2010][2010][2];
pair<bool, long long> func(int pos, int left_taken, bool taken) {
  if (pos == ((2 * n))) {
    if (left_taken) {
      return make_pair(0, 0);
    }
    return make_pair(1, 0);
  }
  if (vis[pos][left_taken][taken]) {
    return dp[pos][left_taken][taken];
  }
  pair<bool, long long> ans = make_pair(0, 0);
  if (taken == 0) {
    if (left_taken) {
      pair<bool, long long> le = func(pos + 1, left_taken + 1, 1);
      pair<bool, long long> ri = func(pos + 1, left_taken - 1, 0);
      long long tmp = 1;
      if (le.first == 0) {
        le.second = 0;
        tmp = 0;
      }
      if (ri.first == 0) {
        ri.second = 0;
      }
      if (le.first || ri.first) {
        ans.first = 1;
        ans.second = max(ans.second, tmp + le.second + ri.second);
      }
      le = func(pos + 1, left_taken + 1, 0);
      ri = func(pos + 1, left_taken - 1, 1);
      tmp = 1;
      if (le.first == 0) {
        le.second = 0;
      }
      if (ri.first == 0) {
        ri.second = 0;
        tmp = 0;
      }
      if (le.first || ri.first) {
        ans.first = 1;
        ans.second = max(ans.second, tmp + le.second + ri.second);
      }
    } else {
      pair<bool, long long> le = func(pos + 1, left_taken + 1, 1);
      long long tmp = 1;
      if (le.first == 0) {
        tmp = 0;
        le.second = 0;
      }
      if (le.first) {
        ans.first = 1;
        ans.second = max(ans.second, tmp + le.second);
      }
    }
  }
  if (left_taken) {
    pair<bool, long long> le = func(pos + 1, left_taken + 1, 0);
    pair<bool, long long> ri = func(pos + 1, left_taken - 1, 0);
    if (le.first == 0) {
      le.second = 0;
    }
    if (ri.first == 0) {
      ri.second = 0;
    }
    if (le.first || ri.first) {
      ans.first = 1;
      ans.second = max(ans.second, le.second + ri.second);
    }
  } else {
    pair<bool, long long> le = func(pos + 1, left_taken + 1, 0);
    if (le.first == 0) {
      le.second = 0;
    }
    if (le.first) {
      ans.first = 1;
      ans.second = max(ans.second, le.second);
    }
  }
  vis[pos][left_taken][taken] = 1;
  ans.second %= 1000000007;
  return dp[pos][left_taken][taken] = ans;
}
int main() {
  cin >> n;
  cout << func(0, 0, 0).second << "\n";
  return 0;
}
