#include<bits/stdc++.h>
#define int long long
using namespace std;
const int N=1005,mod=1e9+7;
int T,n,m,num,cnt;
int a[N],b[N],tr[N][N];
map<int,int>mp;
int lowbit(int x){
return x&(-x);
}
void add(int s,int x,int v){
for(;x<=cnt+1;x+=lowbit(x)){
tr[s][x]+=v;
tr[s][x]%=mod;
}
}
int query(int s,int x){
int res=0;
for(;x;x-=lowbit(x)){
res+=tr[s][x];
res%=mod;
}
return res;
}
signed main(){
scanf("%lld",&T);
while(T--){
num++;
scanf("%lld%lld",&n,&m);
mp.clear();
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
tr[j][i]=0;
}
}
for(int i=1;i<=n;i++){
scanf("%lld",&a[i]);
b[i]=a[i];
}
sort(b+1,b+1+n);
cnt=unique(b+1,b+1+n)-b-1;
for(int i=1;i<=cnt;i++){
mp[b[i]]=i+1;
}
for(int i=1;i<=n;i++){
a[i]=mp[a[i]];
}
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
if(j==1){
add(1,a[i],1);
}
else{
int z=query(j-1,a[i]-1);
add(j,a[i],z);
}
}
}
printf("Case #%lld: %lld\n",num,query(m,cnt+1));
}
}