#include #include #include #include #include #include #include #include #define ls (t<<1) #define rs ((t<<1)+1) #define mid ((l+r)>>1) #define fi first #define se second #define mk make_pair #define N 105 #define M 200005 #define seed 23333 #define Mo 998244353 using namespace std; int i,j,m,n,p,k,a[N],l; struct Node{int sum[N],len;}f[N][N],ans; void jia(Node &x,Node y) { int i; int len=max(x.len,y.len); for (i=1;i<=len;++i) x.sum[i]+=y.sum[i]; for (i=1;i<=len;++i) x.sum[i+1]+=x.sum[i]/10000,x.sum[i]%=10000; x.len=len; while (x.sum[x.len+1]) ++x.len,x.sum[x.len+1]+=x.sum[x.len]/10000,x.sum[x.len]%=10000; } int main() { while (scanf("%d%d",&n,&k)!=EOF) { for (i=1;i<=n;++i) scanf("%d",&a[i]); a[0]=-1; for (i=1;i<=ans.len;++i) ans.sum[i]=0; ans.len=0; for (i=1;i<=n;++i) for (j=1;j<=k;++j) { for (l=1;l<=f[i][j].len;++l) f[i][j].sum[l]=0; f[i][j].len=0; } f[0][0].len=f[0][0].sum[1]=1; for (i=1;i<=n;++i) for (j=1;j<=k;++j) for (l=0;la[l]) jia(f[i][j],f[l][j-1]); for (i=1;i<=n;++i) jia(ans,f[i][k]); if (!ans.len) printf("0\n"); else { printf("%d",ans.sum[ans.len]); for (i=ans.len-1;i;--i) printf("%04d",ans.sum[i]); puts(""); } } }