#include<bits/stdc++.h>
using namespace std;
long long a[30][100005],b[30][100005],n;
long long quary(long long x1,long long x2){
long long x=log2(x2-x1+1);
return max(a[x][x1],a[x][x2-(1<<x)+1])-min(b[x][x1],b[x][x2-(1<<x)+1]);
}
long long ans1=1e18;
int main(){
long long T,k;
cin>>T;
for(long long i=1;i<=T;i++){
cin>>n>>k;
memset(a,0,sizeof(a));
memset(b,0,sizeof(b));
for(long long i=1;i<=n;i++){
cin>>a[0][i];
b[0][i]=a[0][i];
}
if(n==k){
cout<<0<<' '<<1<<endl;
continue;
}
long long len=log2(n);
for(long long i=1;i<=len;i++){
for(long long j=1;j<=n-(1<<i)+1;j++){
a[i][j]=max(a[i-1][j],a[i-1][j+(1<<(i-1))]);
b[i][j]=min(b[i-1][j],b[i-1][j+(1<<(i-1))]);
}
}
for(int i=1;i<=k;i++){
ans1=min(ans1,quary(i,n-k+i));
}
cout<<ans1<<" ";
long long lef=1,righ=n-k+1;
long long mid;
while(lef<righ){
mid=(lef+righ)/2;
long long s=0;
for(long long i=1;i<=n-mid+1;i++){
if(quary(i,i+mid-1)>=ans1){
s++;
if(s==k){
break;
}
}
}
if(s==k){
righ=mid;
}else{
lef=mid+1;
}
}
cout<<lef<<endl;
}
return 0;
}