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

// f[n][i]=g[n-1][i]+g[n-3][i-1]
// g[n][i]=C(n+1-i,i)
// f[n][i]=C(n-i,i)+C(n-i-1,i-1)
// Ans = sum_偶数i (2*f[n][n-i]*i!)

int p = 1000000007, n, ans, fac[1000010], inv[1000010];

int qpow(int x, int y)
{
	int ans = 1;
	while (y > 0)
	{
		if (y & 1) ans = ans * (long long)x % p;
		x = x * (long long)x % p;
		y >>= 1;
	}
	return ans;
}

int c(int n, int m)
{
	if (m < 0 || m > n) return 0;
	return fac[n] * (long long)inv[m] % p * inv[n - m] % p;
}

int main()
{
	scanf("%d", &n);
	fac[0] = 1;
	for (int i = 1; i <= n; i++) fac[i] = fac[i - 1] * (long long)i % p;
	inv[n] = qpow(fac[n], p - 2);
	for (int i = n; i >= 1; i--) inv[i - 1] = inv[i] * (long long)i % p;
	for (int i = 0; i <= n; i += 2)
	{
		ans = (ans + fac[i] * (long long)(c(i, n - i) + c(i - 1, n - i - 1))) % p;
	}
	printf("%d\n", ans * 2 % p);
	return 0;
}

