#include #include #include using namespace std; long long tbl[1025][1025]; void init() { for (int i=0;i<1025;i++) for (int j=0;j<1025;j++) tbl[i][j]=-1ll; } // nこまで置いた。ちょくぜんより大きなものはa個 long long solve(int n,int a,vector &p,int size) { if (n==size-1) return 1; // 完了 if (tbl[n][a]>=0) return tbl[n][a]; int b=size-1-n-a; // ちいさなもの //cout<>n,n!=0){ vector dat(n); for (int i=0;i>dat[i]; vector p(n-1); for (int i=0;idat[i+1]; // 大きけりゃTrue init(); long long ans=0; for (int i=1;i<=n;i++) ans+=solve(0,n-i,p,n); cout<