#include<bits/stdc++.h>
typedef long long ll;
using namespace std;
const int maxn = 2000009;
const int mod = 1e9+7;

ll f[maxn],sum[maxn],fib[maxn],fac[maxn],nfac[maxn],inv[maxn];
int n;
ll ans;

ll C(int x,int y)
{
	if(x<y) return 0;
	return fac[x]*nfac[y]%mod*nfac[x-y]%mod;
}

int main()
{
	scanf("%d",&n);
	fib[0]=1;fib[1]=2;fac[0]=nfac[0]=inv[1]=1;
	for(int i=2;i<=n*2;i++) fib[i]=(fib[i-1]+fib[i-2])%mod;
	for(int i=1;i<=n*2;i++) fac[i]=fac[i-1]*i%mod;
	for(int i=2;i<=n*2;i++) inv[i]=(mod-mod/i)*inv[mod%i]%mod;
	for(int i=1;i<=n*2;i++) nfac[i]=nfac[i-1]*inv[i]%mod;
	for(int i=1;i<=n-1;i++)
	{
		int zero=n-1-i,one=i;
		ll tmp=C(n-3+1-zero,zero)*fac[zero]%mod*fac[one]%mod;
		tmp=(tmp-sum[i-1]+mod)%mod;
		ans=(ans+tmp*i)%mod;
		sum[i]=(sum[i-1]+tmp)%mod;
	}
	cout<<ans<<endl;
	return 0;
}
