#include //#define LOCAL using namespace std; typedef long long ll; const int N=1005; const ll mod=1e9+7; int n; ll f[N][N][2][2]; //???????????????????????? void upd(ll &x,ll y){ x=(x+y)%mod; if(x<0) x+=mod; } namespace solve1{ void calc(){ f[1][0][0][0]=1; f[2][0][0][0]=2; for(int i=3;i<=n;i++){ for(int j_old=0;j_old =1){ upd(f[i][j_old-1][0][0], val); } // 2b?????????? ll cnt2b = (j_old -a) - b; if(cnt2b >0 && j_old >=1){ upd(f[i][j_old-1][b][0], val * cnt2b % mod); } // 3?????? ll cnt3 = (i -2) - (j_old -a); upd(f[i][j_old][b][0], val * cnt3 % mod); } } } } cout<>n; f[1][0][0][0]=1,f[2][0][0][0]=2; for(int i=3;i<=n;i++){ for(int j=0;j0 && j>0) (f[i][j-1][0][a]+=w*(j-a-b))%=mod; //??i-2?? if(2-b>0) (f[i][j+1][1][a]+=w*(2-b))%=mod; //?????? if(i-j-(2-b)>0) (f[i][j][0][a]+=w*(i-j-(2-b)))%=mod; } } } } cout<