#include <bits/stdc++.h>
using namespace std;
const int MaxN = 200009;
const int MOD = 1000000007;
int N, p[MaxN], b[MaxN];
bool yesp[MaxN];
int prime[MaxN];
void Init() {
  for (int i = 1; i <= N * 2; i++) yesp[i] = true;
  p[0] = 0;
  for (int i = 2; i <= N * 2; i++)
    if (yesp[i]) {
      p[++p[0]] = i;
      prime[i] = p[0];
      for (int j = 1; i * j <= N * 2; j++) yesp[i * j] = false;
    }
  for (int i = 1; i <= p[0]; i++) b[i] = 0;
}
void Mul(int x) {
  int y = x;
  for (int i = 1; p[i] * p[i] <= x; i++) {
    while (y % p[i] == 0) {
      y /= p[i];
      b[i]++;
    }
  }
  if (y > 1) b[prime[y]]++;
}
void Div(int x) {
  int y = x;
  for (int i = 1; p[i] * p[i] <= x; i++) {
    while (y % p[i] == 0) {
      y /= p[i];
      b[i]--;
    }
  }
  if (y > 1) b[prime[y]]--;
}
long long Power(int x, int q) {
  long long ret = 1, c = x;
  int t = q;
  while (t > 0) {
    if (t % 2 == 1) ret = (ret * c) % MOD;
    t /= 2;
    c = (c * c) % MOD;
  }
  return ret;
}
long long Solve() {
  long long ret = 1;
  for (int i = 1; i <= p[0]; i++) ret = (ret * Power(p[i], b[i])) % MOD;
  return ret;
}
long long C(int x, int y) {
  Init();
  for (int i = 1; i <= y; i++) Mul(x - i + 1);
  for (int i = 1; i <= y; i++) Div(i);
  return Solve();
}
int main() {
  while (1 == scanf("%d", &N))
    printf("%I64d\n", (C(2 * N - 1, N - 1) * 2 + MOD - N) % MOD);
  return 0;
}
