func_code_string: #include <bits/stdc++.h>   using namespace std;   long long fact[100001], inv[100001], ifact[100001];   template <typename T, typename T1>   T mod(T x, T1 p) {     x %= p;     if (x < 0) x += p;     return x;   }   template <typename T>   T inverse(T x, T p) {     x = mod(x, p);     if (x == 1) return x;     return mod((1LL * (-p / x) * (inv[p % x] % p)), p);   }   int NcR(int n, int r) {     int ret = (1LL * ifact[n - r] * ifact[r]) % 1000000007;     ret = (1LL * ret * fact[n]) % 1000000007;     return ret;   }   int main(int argc, char **argv) {     ios::sync_with_stdio(false);     fact[0] = 1;     for (int i = 1; i < 100001; i++) {       fact[i] = 1LL * fact[i - 1] * i % 1000000007;     }     ifact[0] = 1;     for (int i = 1; i < 100001; i++) {       inv[i] = inverse(i, 1000000007);       ifact[i] = 1LL * ifact[i - 1] * inv[i] % 1000000007;     }     int N;     cin >> N;     long long ans = 0;     for (int i = 1; i < N; i++) {       ans = (ans + 1LL * NcR(N - 1, i) * NcR(N, i + 1)) % 1000000007;     }     ans = (ans * 2 + N) % 1000000007;     cout << ans << endl;     return 0;   }   