#include<bits/stdc++.h>
using namespace std;
#define f(i,a,b) for(int i=a;i<=b;i++)
int am[500005][35];
int an[500005][35];
int N,k,n;
int cham(int s,int g){
int l=log2(g);
return max(am[s][l],am[s+g-(1<<l)][l]);
}
int chan(int s,int g){
int l=log2(g);
return min(an[s][l],an[s+g-(1<<l)][l]);
}
int check(int ml){
int tot=0;
f(i,1,n-ml+1){
if(N<=cham(i,ml)-chan(i,ml)){
tot++;
}
if(tot==k)return 1;
}
return 0;
}
int main(){
int t;
scanf("%d",&t);
while(t--){
scanf("%d%d",&n,&k);
f(i,1,n){
scanf("%d",&am[i][0]);
an[i][0]=am[i][0];
}
f(e,1,(int)log2(n)){
f(i,1,n){
if(i+(1<<e)-1>n)break;
am[i][e]=max(am[i][e-1],am[i+(1<<e-1)][e-1]);
an[i][e]=min(an[i][e-1],an[i+(1<<e-1)][e-1]);
}
}
int ml=n-k+1;
N=0x3f3f3f3f;
f(i,1,k){
N=min(N,cham(i,ml)-chan(i,ml));
}
int zl=1,yl=ml;
while(zl<yl){
int mid=(zl+yl)>>1;
if(check(mid)){
yl=mid;
}
else {
zl=mid+1;
}
}
printf("%d %d\n",N,yl);
}
return 0;
}