#include <bits/stdc++.h>
using namespace std;
struct Euclid {
  int x, y, d;
  Euclid() {}
  Euclid(int xx, int yy, int dd) { x = xx, y = yy, d = dd; }
};
int gcd(int a, int b) { return !b ? a : gcd(b, a % b); }
Euclid egcd(int a, int b) {
  if (!b) return Euclid(1, 0, a);
  Euclid r = egcd(b, a % b);
  return Euclid(r.y, r.x - a / b * r.y, r.d);
}
int modularInverse(int a, int n) {
  Euclid t = egcd(a, n);
  if (t.d > 1) return 0;
  int r = t.x % n;
  return r < 0 ? r + n : r;
}
int main() {
  int i, j, k, n;
  cin >> n;
  long long s, p, t;
  s = 1;
  p = 1;
  for (i = 2; i <= n; i++) {
    p = (((p * (n + i - 2)) % 1000000007) *
         (1000000007 + modularInverse(i - 1, 1000000007))) %
        1000000007;
    s = (s + p) % 1000000007;
  }
  s = ((s << 1) - n + ((long long)1000000007 << 1)) % 1000000007;
  cout << s << '\n';
  return 0;
}
