#include <bits/stdc++.h>
const int N = 1e6 + 100;
long long MOD = 1e9 + 7;
using namespace std;
int get_rand() {
  time_t *t;
  srand(time(t) << time(t) ^ time(t));
  return (rand() << 16) ^ rand();
}
bool is_big(char c) { return 'A' <= c && c <= 'Z'; }
bool is_little(char c) { return 'a' <= c && c <= 'z'; }
bool is_prime(long long x) {
  for (int i = 2; i * i <= x; i++)
    if (x % i == 0) return 0;
  return 1;
}
long long binpowMOD(long long a, int k) {
  if (k == 0) return 1;
  long long b = binpowMOD(a, k / 2) % MOD;
  b = b * b % MOD;
  if (k % 2 == 1)
    return b * a % MOD;
  else
    return b % MOD;
}
unsigned long long CNK[2200][2200];
void getCNK() {
  for (int n = 0; n <= 2100; n++) {
    CNK[n][n] = 1;
    CNK[n][0] = 1;
    for (int k = 1; k <= n; k++) {
      if (n) CNK[n][k] = (CNK[n - 1][k] + CNK[n - 1][k - 1]) % MOD;
    }
  }
}
long long fact[200500];
long long Rfact[200500];
int main() {
  ios_base::sync_with_stdio(false);
  long long n, m, t, k, ans;
  cin >> n;
  fact[0] = 1;
  Rfact[0] = 1;
  for (int i = 1; i <= 2 * n + 100; i++) {
    fact[i] = fact[i - 1] * i % MOD;
    Rfact[i] = binpowMOD(fact[i], MOD - 2);
  }
  cout << ((2 * (fact[2 * n - 1] * Rfact[n]) % MOD * Rfact[n - 1]) % MOD - n +
           MOD) %
              MOD;
  return 0;
}
