#include using namespace std; //[index][no of lists] int dp[1202][1202], fact[1202], invfact[1202]; int mod, fg[1202]; vectorm; long long inverse(int p,int i) { long long k=1,l=i; int j; for(j=1;j<=p-2;j=(j<<1)) { if((j&(p-2))>0) k=(k*l)%p; l=(l*l)%p; } return k; } void cal(int p,int n) { int i; fact[0]=invfact[0]=1; fact[1]=invfact[1]=1; for(i=2;i<=n;i++) { fact[i]=((long long)fact[i-1]*i)%p; invfact[i]=(invfact[i-1]*inverse(p,i))%p; } } inline int rec(int idx, int li){ if (dp[idx][li] >= 0) return dp[idx][li]; idx+=li; long long k=0; if (idx == m.size()){ k=1; } else{ for(int i=1;i<=li;i++) if (idx+i-1> n; cal(mod, n+1); for(i = 0; i < n; i++){ cin >> j; m.push_back(j); } for(i=1,j=1,fg[0]=1;i