#include<stdio.h>
#include <algorithm>
#include <vector>
using namespace std;
#define LL long long
const int maxn=1e5+10;
int a[maxn];
int b[maxn];
int main()
{
// freopen("in.txt","r",stdin);
int t;
scanf("%d",&t);
for(int ca=1;ca<=t;ca++)
{
int n,l;
scanf("%d%d",&n,&l);
for(int i=0;i<n;i++)
scanf("%d",a+i);
vector<int>q;
int ans=0;
a[n]=1<<30;b[n]=0; //边界1
for(int i=n-1;i>=l;i--)
{
if(q.empty()||-a[i]>q.back()) q.push_back(-a[i]),b[i]=q.size();
else {
int k=lower_bound(q.begin(),q.end(),-a[i])-q.begin();
q[k]=-a[i];
b[i]=k+1;
}
ans=max(ans,b[i]);//边界2
}
q.clear();
for(int i=0;i+l+1<=n;i++)
{
if(q.empty()||a[i]>q.back()) q.push_back(a[i]);
else *lower_bound(q.begin(),q.end(),a[i])=a[i];
int id=i+l+1;
int k=lower_bound(q.begin(),q.end(),a[id])-q.begin();
ans=max(ans,k+b[id]);
}
printf("Case #%d: %d\n",ca,ans);
}
return 0;
}