#include <bits/stdc++.h>
#pragma GCC optimize("fast-math")
#pragma GCC optimize("Ofast")
#pragma GCC optimize("O3")
#pragma GCC optimize("no-stack-protector")
using namespace std;
const long long MOD = 1e9 + 7;
const long long MAXN = 5;
long long gcd(long long a, long long b) {
  if (a == 0) return b;
  while (b != 0) {
    a = a % b;
    swap(a, b);
  }
  return a;
}
long long binvos(long long a, long long b) {
  if (b == 0) return 1;
  if (b % 2 == 1) return (binvos(a, b - 1) * a) % MOD;
  long long d = binvos(a, b / 2);
  return (d * d) % MOD;
}
signed main() {
  ios_base::sync_with_stdio(false);
  cin.tie(nullptr);
  long long n;
  cin >> n;
  if (n == 2) {
    cout << 19;
    return 0;
  }
  long long ans = 0;
  long long o = 1;
  vector<long long> fact(2 * n + 1, 1);
  for (long long i = 1; i <= 2 * n; ++i) fact[i] = (fact[i - 1] * i) % MOD;
  for (long long i = 0; i <= n; ++i) {
    ans += o;
    o *= 2;
    o %= MOD;
  }
  for (long long i = 0; i <= n; ++i) {
    long long t = (((fact[n + i] * binvos(fact[n], MOD - 2)) % MOD) *
                   binvos(fact[i], MOD - 2)) %
                  MOD;
    o = (o - 2 * t + MOD + MOD) % MOD;
    ans += o;
    ans %= MOD;
    o *= 2;
  }
  cout << ans;
}
