#include <iostream>
#include <vector>
using namespace std;
using ll = long long;
ll const M = 1'000'000'007;
struct mod {
ll val;
// v >= 0
mod(ll const& v) {
if (v < M)
val = v;
else if (v < 2 * M)
val = v - M;
else
val = v % M;
}
mod operator +(mod const& rhs) const {
return val + rhs.val;
}
mod operator -(mod const& rhs) const {
return val + M - rhs.val;
}
mod operator *(mod const& rhs) const {
return val * rhs.val;
}
mod pow(ll const& p) const {
if (p == 0)
return 1;
if (p % 2 == 1)
return *this * pow(p - 1);
mod const hp = pow(p / 2);
return hp * hp;
}
mod inv() const {
return pow(M - 2);
}
mod operator /(mod const& rhs) const {
return *this * rhs.inv();
}
};
mod fact(ll const n) {
mod ans = 1;
for (ll i = 2; i <= n; i++)
ans = ans * i;
return ans;
}
mod nck(ll const n, ll const k) {
return fact(n) / fact(k) / fact(n - k);
}
int main() {
ios_base::sync_with_stdio(false);
cin.tie(nullptr);
ll n;
cin >> n;
cout << ((nck(2 * n - 1, n - 1) - nck(2 * n - 1, n - 2)) / 2).val << "\n";
}