#include<stdio.h>
#include<iostream>
#include<string>
#include<fstream>
using namespace std;
class PEOPLE
{
public:
long value;
long tag;
};
typedef PEOPLE elem_t;
class QUEUE
{
public:
elem_t a[200020];
long r,f;
void init()
{
r=0;
f=1;
}
void push(elem_t n)
{
a[++r]=n;
}
void pop_rear()
{
r--;
}
void pop_front()
{
f++;
}
elem_t& get_front()
{
return a[f];
}
elem_t& get_rear()
{
return a[r];
}
bool empty()
{
return r<f;
}
};
QUEUE que;
int a[200020];
int dp_sum[200020];
int main()
{
int T;
//freopen("e:\\data_in.txt","r",stdin);
int n,k;
int i,j;
cin>>T;
while(T--)
{
que.init();
cin>>n>>k;
long sum=0;
for(i=1;i<=n;i++)
cin>>a[i];
int st;
int en;
long maxsum=-2100000000;
for(i=n+1;i<=n+k;i++) //把 a1,a2,a3,a4加在 an+1,an+2,an+k上面
a[i]=a[i-n];
for(i=1;i<=n+k;i++)
{
sum+=a[i];
dp_sum[i]=sum;
int start=i-k;
if(start<1)
start=0;
if(sum-dp_sum[start]>maxsum)
{
st=start+1;
en=i;
maxsum=sum-dp_sum[start];
}
}
for(i=1;i<=n+k;i++)
{
while(!que.empty()&&que.get_rear().value>dp_sum[i]) // 可恶的que.get_rear().value>=dp_sum[i] 害我WA了无数次
que.pop_rear(); //
PEOPLE one;
one.tag=i;
one.value=dp_sum[i];
que.push(one);
int start=i-k;
if(start<1)
start=0;
while(!que.empty()&&que.get_front().tag<start)
que.pop_front();
if(que.get_front().tag!=i&&dp_sum[i]-que.get_front().value>maxsum)
{
maxsum=dp_sum[i]-que.get_front().value;
st=que.get_front().tag+1;
en=i;
}
}
st=(st%(n))?(st%(n)):n;
en=(en%(n))?(en%(n)):n;
cout<<maxsum<<" "<<st<<" "<<en<<endl;
}
return 0;
}