#include using namespace std; #define int long long const int maxn = 1e3+114; const int mod = 1e9+7; int dp[maxn][maxn][2][2];//?????? <=i ???? j ? x ? x-2 ??????? i-1,i-3 ??????? i ? i-2 ?? int n; signed main(){ ios::sync_with_stdio(0); cin.tie(0),cout.tie(0); cin>>n; if(n<=2){ cout<dp[i][*][*][*] //???????? x ? x-2 ????? //???? i-2 ? i-4 ????? //???? i-1 ? i-3 ????? if(j-(x==1)-(y==1)>0){ dp[i][j-1][y][0]=(dp[i][j-1][y][0]+dp[i-1][j][x][y]*(j-(x==1)-(y==1)))%mod; } //?? i-1 ? i-3 ????? if(y==1){ dp[i][j-1][0][0]=(dp[i][j-1][0][0]+dp[i-1][j][x][y])%mod; } //?? i-2 ? i-4 ????? if(x==1){ dp[i][j][y][1]=(dp[i][j][y][1]+dp[i-1][j][x][y])%mod; } //?????? x ? x-2 ????? //? i-2 ??? if(i-1+1-j-2+x>0) dp[i][j][y][0]=(dp[i][j][y][0]+dp[i-1][j][x][y]*(i-1+1-j-2+x))%mod; //? i-2 ?? dp[i][j+1][y][1]=(dp[i][j+1][y][1]+dp[i-1][j][x][y]*(2-x))%mod; } } } } cout<