#include <bits/stdc++.h>
#pragma GCC optimize("O3")
#pragma comment(linker, "/STACK:1024000000,1024000000")
using namespace std;
const int INF = (1 << 30) - 1;
const long long LINF = (1LL << 61) - 1;
const double EPS = 1e-10;
const int N = 2e6 + 5000, MOD = 1e9 + 7;
int n;
long long ans;
long long fact[N], inv[N], sum[N];
inline long long qpow(long long base, long long k) {
  long long res = 1;
  while (k) {
    if (k & 1) res *= base, res %= MOD;
    base *= base, base %= MOD;
    k >>= 1;
  }
  return res;
}
void preproc() {
  fact[0] = 1, inv[0] = qpow(fact[0], MOD - 2), sum[0] = 1;
  for (int i = 1; i <= 2 * n; i++) {
    fact[i] = fact[i - 1] * i, fact[i] %= MOD;
    inv[i] = qpow(fact[i], MOD - 2);
    sum[i] = sum[i - 1] + fact[i], sum[i] %= MOD;
  }
}
long long getC(int i, int j) {
  return fact[i] * inv[j] % MOD * inv[i - j] % MOD;
}
inline void mod(long long &k) {
  k %= MOD;
  while (k < 0) k += MOD;
}
int main() {
  ios::sync_with_stdio(false);
  cin.tie(0);
  cin >> n;
  preproc();
  ans = qpow(2, n + 1) - 1;
  long long last = qpow(2, n);
  for (int i = n + 1; i <= 2 * n; i++) {
    last = last * 2 % MOD - getC(i - 1, i - 1 - n) * 2 % MOD;
    mod(last);
    ans += last;
    mod(ans);
  }
  cout << ans << endl;
  return 0;
}
