#include<bits/stdc++.h>
using namespace std;
int t,n,k,stin[100005][21],stax[100005][21],lg[100005],diff;
inline void pre()
{
for(int i=1;i<=lg[n];i++)
{
for(int j=1;j<=n-(1<<i)+1;j++)
{
stin[j][i]=min(stin[j][i-1],stin[j+(1<<(i-1))][i-1]);
stax[j][i]=max(stax[j][i-1],stax[j+(1<<(i-1))][i-1]);
}
}
}
inline bool panduan(int x)
{
int dif=0x7fffffff;
for(int i=1;i<=n-x+1;i++)
{
int x=i,y=i+(n-x);
dif=min(dif,max(stax[x][lg[y-x+1]],stax[y-(1<<lg[y-x+1])+1][lg[y-x+1]])-min(stin[x][lg[y-x+1]],stin[y-(1<<lg[y-x+1])+1][lg[y-x+1]]));
}
if(dif>=diff) return 1;
else return 0;
}
int main()
{
cin>>t;
while(t--)
{
memset(stin,0,sizeof(stin));
memset(stax,0,sizeof(stax));
cin>>n>>k;
lg[0]=-1;
for(int i=1;i<=n;i++) lg[i]=lg[i>>1]+1;
for(int i=1;i<=n;i++) scanf("%d",&stin[i][0]),stax[i][0]=stin[i][0];
diff=0x7fffffff;
pre();
for(int i=1;i<=k;i++) {
int x=i,y=i+(n-k);
diff=min(diff,max(stax[x][lg[y-x+1]],stax[y-(1<<lg[y-x+1])+1][lg[y-x+1]])-min(stin[x][lg[y-x+1]],stin[y-(1<<lg[y-x+1])+1][lg[y-x+1]]));
}
int l=1,r=n-k+1;
int ans=0;
while(l<r)
{
int mid=(l+r)>>1;
if(panduan(mid)) r=mid;
else l=mid+1;
}
cout<<diff<<" "<<r<<endl;
}
return 0;
}