#include <bits/stdc++.h>
typedef long long ll;
using namespace std;

const int mod = 1e9 + 7, maxn = 1e6 + 5;
//const int mod = 1e9 + 7, maxn = 15;
void upd(int &a, const int &b) { a = (a + b) % mod; }
int add(const int &a, const int &b) { return (a + b) % mod; }
int mul(const int &a, const int &b) { return (a * 1ll * b) % mod; }
int pwr(int a, int b)
{
    if (!b) return 1;
    int h = pwr(a, b>>1);
    h = mul(h, h);
    if (b&1) h = mul(h, a);
    return h;
}
int f[maxn], invf[maxn];
int c(int n, int k) 
{ 
    if (k > n || k < 0 || n < 0) return 0;
    return mul(f[n], mul(invf[k], invf[n-k])); 
}
int main()
{
    ios::sync_with_stdio(false);
    cin.tie(0);
    f[0] = invf[0] = 1;
    for (int i = 1; i < maxn; i++) f[i] = mul(f[i-1], i), invf[i] = pwr(f[i], mod-2);
    int n;
    cin >> n;
    int ans = 0;
    for (int na = 1; na <= n; na++)
    {
        if (na * 2 > n || na * 4 < n) continue;
        int fr = n - 2 * na;
        //cout << c(na * 2 + 1, fr) << " - " << c(na * 2 - 1, fr - 2) << endl;
        int end = add(c(na * 2 + 1, fr), mod - c(na * 2 - 1, fr - 2));
        upd(ans, mul(end, f[na * 2]));
    }
    cout << mul(ans, 2) << "\n";
    return 0;
}