//μ's forever
#include <bits/stdc++.h>
#define N 1000005
#define mod 1000000007
//#define getchar nc
using namespace std;
inline char nc(){
    static char buf[100000],*p1=buf,*p2=buf;
    return p1==p2&&(p2=(p1=buf)+fread(buf,1,100000,stdin),p1==p2)?EOF:*p1++;
}
inline int read()
{
    register int x=0,f=1;register char ch=getchar();
    while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}
    while(ch>='0'&&ch<='9')x=(x<<3)+(x<<1)+ch-'0',ch=getchar();
    return x*f;
}
inline void write(register int x)
{
    if(!x)putchar('0');if(x<0)x=-x,putchar('-');
    static int sta[20];register int tot=0;
    while(x)sta[tot++]=x%10,x/=10;
    while(tot)putchar(sta[--tot]+48);
}
int n,fac[N],invf[N],ans;
int binom(int n,int m){
    if(n<m) return 0;
    return 1ll*fac[n]*invf[m]%mod*invf[n-m]%mod;
}
int power(int a,int b){
    int res=1;
    while(b){
        if(b&1) res=1ll*res*a%mod;
        a=1ll*a*a%mod,b>>=1;
    }
    return res;
}
int main()
{
    fac[0]=1;
    for(int i=1;i<=1000000;++i) fac[i]=1ll*fac[i-1]*i%mod;
    invf[1000000]=power(fac[1000000],mod-2);
    for(int i=1000000;i>=1;--i) invf[i-1]=1ll*invf[i]*i%mod;
    n=read();
    for(int i=2;i<=n;i+=2){
        ans=(0ll+ans+1ll*binom(i,n-i)*fac[i-1]%mod)%mod;
    }
    printf("%d\n",2ll*ans*n%mod);
    return 0;
}
