#include<bits/stdc++.h>

#define INL inline
#define ll long long
#define ull unsigned long long

using namespace std;

INL int read()
{
	int x=0,w=1;char ch=getchar();
	while((ch<'0'||ch>'9')&&ch!='-')ch=getchar();
	if(ch=='-')ch=getchar(),w=-1;
	while(ch>='0'&&ch<='9')x=(x<<1)+(x<<3)+ch-48,ch=getchar();
	return x*w;
}

const int MOD=1e9+7;
const int N=2e6+5;

INL int fpow(int x,int p)
{
	int res=1;
	while(p)
	{
		if(p&1)res=1ll*res*x%MOD;
		x=1ll*x*x%MOD;p>>=1;
	}
	return res;
}

int fac[N],inv[N];

INL void add(int &x,int y){x=x+y>=MOD?x+y-MOD:x+y;}

INL int C(int n,int m){if(n<m)return 0;return 1ll*fac[n]*inv[m]%MOD*inv[n-m]%MOD;}

int main()
{
	//freopen(".in","r",stdin);
	//freopen(".out","w",stdout);
	int n=read();
	fac[0]=inv[0]=1;
	for(int i=1;i<=n;i++)
	{
		fac[i]=1ll*fac[i-1]*i%MOD;
		inv[i]=fpow(fac[i],MOD-2);
	}
	int ans=0;
	for(int i=2;i<=n;i+=2)
	{
		add(ans,1ll*fac[i]*((C(i,n-i)+C(i-1,n-i-1))%MOD)%MOD);
	}
	printf("%d\n",ans*2%MOD);
	return 0;
}
