#include <stdio.h>
#include <stdbool.h>
#include <string.h>
#define T 10000
#define K 10000
int a[T];
int b[K];
int c[K][2];
int l,r,ans;
int t,k;
int max(int a, int b) {
return (a >= b) ? a : b;
}
bool check(int u){
int s = 1;
memset(b, 0, sizeof(int) * k);
for(int i = 1;i <= t;i++){
if(b[s] + a[i] > u){
s++;
b[s] += a[i];
}else{
b[s] += a[i];
}
}
if(s > k){
return false;
}
return true;
}
void print(int u){
int i = k,temp = 0;
for(int j = t;j>0;j--){
if(c[i][1] == 0){
c[i][1] = j;
}
if(temp + a[j] > u){
c[i][0] = j + 1;
i--;
temp = a[j];
c[i][1] = j;
}else{
temp += a[j];
}
}
c[i][0] = 1;
for(int i = 1;i<=k;i++){
if(c[i][0] == 0){
printf("0 0");
printf("\n");
}else{
printf("%d %d",c[i][0],c[i][1]);
printf("\n");
}
}
}
int main () {
l = -1;r = 0;ans = 0;
scanf("%d %d",&t,&k);
for(int i = 1;i<=t;i++){
scanf("%d",&a[i]);
l = max(l,a[i]);
r += a[i];
}
while(l<=r){
int mid = (l + r)/2;
if(check(mid)){
r = mid - 1;
ans = mid;
}else{
l = mid + 1;
}
}
print(ans);
return 0;
}