for(i=0;i<l;++i) { if(l-i<=20&&urmv[i]!=-1) a[0][i]=1; else a[0][i]=-1; } cl=0; for(i=2;i<=n;++i) { cl^=1; for(j=l-1;j>=0;--j) { a[cl][j]=-1; s1=ok=0; for(k=1;k<=20&&j+k-1<l;++k) { if(urmv[j]==-1||j+k-1<urmv[j]) continue; if(a[cl^1][k+j]!=-1) { ok=1; s1=(s1+a[cl^1][j+k])%MOD; } } if(ok) a[cl][j]=s1; } } g<<a[0][cl]<<'\n';