#include <bits/stdc++.h>
using namespace std;
long long fact[100001], inv[100001], ifact[100001];
template <typename T, typename T1>
T mod(T x, T1 p) {
  x %= p;
  if (x < 0) x += p;
  return x;
}
template <typename T>
T inverse(T x, T p) {
  x = mod(x, p);
  if (x == 1) return x;
  return mod((1LL * (-p / x) * (inv[p % x] % p)), p);
}
int NcR(int n, int r) {
  int ret = (1LL * ifact[n - r] * ifact[r]) % 1000000007;
  ret = (1LL * ret * fact[n]) % 1000000007;
  return ret;
}
int main(int argc, char **argv) {
  ios::sync_with_stdio(false);
  fact[0] = 1;
  for (int i = 1; i < 100001; i++) {
    fact[i] = 1LL * fact[i - 1] * i % 1000000007;
  }
  ifact[0] = 1;
  for (int i = 1; i < 100001; i++) {
    inv[i] = inverse(i, 1000000007);
    ifact[i] = 1LL * ifact[i - 1] * inv[i] % 1000000007;
  }
  int N;
  cin >> N;
  long long ans = 0;
  for (int i = 1; i < N; i++) {
    ans = (ans + 1LL * NcR(N - 1, i) * NcR(N, i + 1)) % 1000000007;
  }
  ans = (ans * 2 + N) % 1000000007;
  cout << ans << endl;
  return 0;
}
