RT
#include <bits/stdc++.h>
using namespace std;
#define int long long
const int N = 1005 , M = 1005 , T = 105 , A = 1e9 , mod = 1e9 + 7;
int a[N] , b[N] , dp[2][N] , wc , n , m;
//dp[i][j]:长度为i的结尾是a_j的严格上升子序列个数
namespace BIT{
int c[N];
inline void clear(){
memset(c , 0 , sizeof(c));
}
inline int lowbit(int x){
return x & (-x);
}
inline void add(int pos , int now){
for(;pos <= n;pos += lowbit(pos)){
c[pos] += now;
}
}
inline int query(int pos){
int qwq = 0;
for(;pos;pos -= lowbit(pos)) qwq += c[pos];
return qwq;
}
};
using namespace BIT;
inline void solve(){
cin >> n >> m;
for(int i = 1;i <= n;i++){
cin >> a[i];
b[i] = a[i];
}
map <int , int> mp;
sort(b + 1 , b + n + 1);
for(int i = 1;i <= n;i++){
mp[b[i]] = i;
}
memset(dp , 0 , sizeof(dp));
for(int i = 0;i <= n;i++){
dp[0][i] = 1;
}
for(int i = 2;i <= m;i++){
clear();
for(int j = 0;j <= n;j++){
dp[1][j] = dp[0][j];
dp[0][j] = 0;
}
for(int j = 1;j <= n;j++){
(dp[0][j] += query(mp[a[j]])) %= mod;
add(mp[a[j]] , dp[1][j]);
// for(int k = 1;k < j;k++){
// if(a[j] > a[k]){
// (dp[i][j] += dp[i - 1][k]) %= mod;
// }
// }
}
}
int ans = 0;
for(int i = 1;i <= n;i++){
(ans += dp[0][i]) %= mod;
}
cout << "Case #" << (++wc) << ": " << ans << endl;
}
signed main(){
int t;
cin >> t;
while(t--) solve();
return 0;
}