#include<bits/stdc++.h>
using namespace std;
#define N 100001
#define ll long long
int n,k;
int st1[N][101],st2[N][101];
int logg[N];
ll x=1e11;
void init()
{
logg[1]=0;logg[2]=1;
for(int i=3;i<=n;i++)
logg[i]=logg[i/2]+1;
for(int j=1;j<=21;j++)
for(int i=1;i+(1<<j)-1<=n;i++)
st1[i][j]=max(st1[i][j-1],st1[i+(1<<(j-1))][j-1]);
for(int j=1;j<=21;j++)
for(int i=1;i+(1<<j)-1<=n;i++)
st2[i][j]=min(st2[i][j-1],st2[i+(1<<(j-1))][j-1]);
}
ll querymax(int l,int r)
{
int s=logg[r-l+1];
return max(st1[l][s],st1[r-(1<<s)+1][s]);
}
ll querymin(int l,int r)
{
int s=logg[r-l+1];
return min(st2[l][s],st2[r-(1<<s)+1][s]);
}
bool check(ll mid)
{
ll res=0;
for(int i=1;i+mid-1<=n;i++)
{
if(querymax(i,i+mid-1)-querymin(i,i+mid-1)>=x)
res++;
}
return res>=k;
}
int main()
{
int t;
cin>>t;
while(t--)
{
memset(st1,-0x9f,sizeof st1);
memset(st2,0x9f,sizeof st2);
scanf("%d%d",&n,&k);
for(int i=1;i<=n;i++)
{
scanf("%d",&st1[i][0]);
st2[i][0]=st1[i][0];
}
init();
for(int i=1;i+n-k<=n;i++)
{
x=min(querymax(i,i+n-k)-querymin(i,i+n-k),x);
}
printf("%lld ",x);
ll l=1,r=n-k+1,ans=0;
while(l<=r){
int mid=(l+r)>>1;
if(check(mid))
r=mid-1,ans=mid;
else l=mid+1;
}
printf("%lld\n",ans);
}
return 0;
}