#include #include using namespace std; #define M 1000000007 typedef long long ll; void add(ll &a,ll b){a=(a+b%M)%M;} int n; ll dp[1005][1005][2][2]; int main(void){ cin>>n; if(n<=2){ cout<0)add(dp[i+1][j-1][0][0],x*j); add(dp[i+1][j+1][0][1],x*2); if(i-j-1>0)add(dp[i+1][j][0][0],x*(i-j-1)); x=dp[i][j][0][1]; if(j-1>0)add(dp[i+1][j-1][1][0],x*(j-1)); add(dp[i+1][j-1][0][0],x); add(dp[i+1][j+1][1][1],x*2); if(i-j-1>0)add(dp[i+1][j][1][0],x*(i-j-1)); x=dp[i][j][1][0]; if(j-1>0)add(dp[i+1][j-1][0][0],x*(j-1)); add(dp[i+1][j][0][1],x); add(dp[i+1][j+1][0][1],x); if(i-j>0)add(dp[i+1][j][0][0],x*(i-j)); x=dp[i][j][1][1]; if(j-2>0)add(dp[i+1][j-1][1][0],x*(j-2)); add(dp[i+1][j-1][0][0],x); add(dp[i+1][j][1][1],x); add(dp[i+1][j+1][1][1],x); if(i-j>0)add(dp[i+1][j][1][0],x*(i-j)); } } cout<