#include <bits/stdc++.h>
using namespace std;
int ai[1005];
int dk[1005];
struct edge {
  int x;
  int v;
} e[1000005];
bool cmp(edge a, edge b) { return a.v < b.v; }
int main() {
  int t;
  scanf("%d", &t);
  while (t--) {
    int n, m;
    scanf("%d %d", &n, &m);
    for (int i = 1; i <= n; i++) {
      scanf("%d", &e[i].v);
      e[i].x = i;
    }
    if (n > m) {
      printf("-1\n");
      continue;
    }
    if (n <= 2) {
      printf("-1\n");
      continue;
    }
    sort(e + 1, e + n + 1, cmp);
    int ans = 0;
    for (int i = 2; i <= n; i++) {
      ans += (e[i - 1].v + e[i].v);
    }
    ans += e[1].v;
    ans += e[n].v;
    for (int i = n; i < m; i++) {
      ans += (e[1].v + e[2].v);
    }
    printf("%d\n", ans);
    for (int i = 2; i <= n; i++) {
      printf("%d %d\n", e[i - 1].x, e[i].x);
    }
    printf("%d %d\n", e[1].x, e[n].x);
    for (int i = n; i < m; i++) {
      printf("%d %d\n", e[1].x, e[2].x);
    }
  }
}
