#include #include using namespace std; int n,k; int b[105]; struct matrix { int t[265]; int len; }zero,ans,f[105][105];; matrix operator +(matrix a,matrix b) { matrix c=zero; c.len=max(a.len,b.len); int now=0; for(int i=1;i<=c.len;i++) { int t=now+a.t[i]+b.t[i]; c.t[i]=t%10; now=t/10; } if(now) { c.len++; c.t[c.len]=now; } return c; } void print(matrix x) { if(x.len==0) { puts("0"); return ; } for(int i=x.len;i>=1;i--) { printf("%d",x.t[i]); } puts(""); return; } int main() { while(scanf("%d%d",&n,&k)!=EOF) { for(int i=1;i<=n;i++) { scanf("%d",&b[i]); } ans=zero; for(int i=1;i<=n;i++) { f[i][1].len=1; f[i][1].t[1]=1; for(int j=2;j<=min(i,k);j++) { f[i][j]=zero; for(int t=1;t=b[i])continue; f[i][j]=f[i][j]+f[t][j-1]; } } ans=ans+f[i][k]; // cout<