#include <bits/stdc++.h>
using namespace std;
// Speed
#define fast_io ios::sync_with_stdio(0); cin.tie(0); cout.tie(0)
// Typedefs
#define int long long
#define pb push_back
#define ff first
#define ss second
#define all(x) (x).begin(), (x).end()
#define sz(x) ((int)(x).size())
#define endl '\n'
void solve() {
int n, m;
cin >> n >> m;
vector<pair<int, int>> a(n);
int sum_all = 0;
for(int i = 0; i < n; i++) {
cin >> a[i].ff;
a[i].ss = i + 1; // Store 1-based index
sum_all += a[i].ff;
}
sort(all(a));
// Case 1: Target is 0 survivors
if (m == 0) {
// The strongest elf (a[n-1]) must take damage >= their health.
// Damage comes from all other n-1 elves attacking them.
int damage_avail = sum_all - a[n-1].ff;
if (damage_avail >= a[n-1].ff) {
cout << n - 1 << endl;
// Everyone attacks the King
for(int i = 0; i < n - 1; i++) {
cout << a[i].ss << " " << a[n-1].ss << endl;
}
} else {
cout << -1 << endl;
}
return;
}
if (n == m) {
cout << 0 << endl;
return;
}
vector<pair<int, int>> moves;
for (int i = 0; i < n - m - 1; i++) {
moves.pb({a[i].ss, a[i+1].ss});
}
moves.pb({a[n-m-1].ss, a[n-1].ss});
cout << sz(moves) << endl;
for(auto p : moves) {
cout << p.ff << " " << p.ss << endl;
}
}
int32_t main() {
fast_io;
int t;
cin >> t;
while(t--) {
solve();
}
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgovLyBTcGVlZAojZGVmaW5lIGZhc3RfaW8gaW9zOjpzeW5jX3dpdGhfc3RkaW8oMCk7IGNpbi50aWUoMCk7IGNvdXQudGllKDApCi8vIFR5cGVkZWZzCiNkZWZpbmUgaW50IGxvbmcgbG9uZwojZGVmaW5lIHBiIHB1c2hfYmFjawojZGVmaW5lIGZmIGZpcnN0CiNkZWZpbmUgc3Mgc2Vjb25kCiNkZWZpbmUgYWxsKHgpICh4KS5iZWdpbigpLCAoeCkuZW5kKCkKI2RlZmluZSBzeih4KSAoKGludCkoeCkuc2l6ZSgpKQojZGVmaW5lIGVuZGwgJ1xuJwoKdm9pZCBzb2x2ZSgpIHsKICAgIGludCBuLCBtOwogICAgY2luID4+IG4gPj4gbTsKICAgIHZlY3RvcjxwYWlyPGludCwgaW50Pj4gYShuKTsKICAgIGludCBzdW1fYWxsID0gMDsKICAgIGZvcihpbnQgaSA9IDA7IGkgPCBuOyBpKyspIHsKICAgICAgICBjaW4gPj4gYVtpXS5mZjsKICAgICAgICBhW2ldLnNzID0gaSArIDE7IC8vIFN0b3JlIDEtYmFzZWQgaW5kZXgKICAgICAgICBzdW1fYWxsICs9IGFbaV0uZmY7CiAgICB9CiAgICAKICAgIHNvcnQoYWxsKGEpKTsKCiAgICAvLyBDYXNlIDE6IFRhcmdldCBpcyAwIHN1cnZpdm9ycwogICAgaWYgKG0gPT0gMCkgewogICAgICAgIC8vIFRoZSBzdHJvbmdlc3QgZWxmIChhW24tMV0pIG11c3QgdGFrZSBkYW1hZ2UgPj0gdGhlaXIgaGVhbHRoLgogICAgICAgIC8vIERhbWFnZSBjb21lcyBmcm9tIGFsbCBvdGhlciBuLTEgZWx2ZXMgYXR0YWNraW5nIHRoZW0uCiAgICAgICAgaW50IGRhbWFnZV9hdmFpbCA9IHN1bV9hbGwgLSBhW24tMV0uZmY7CiAgICAgICAgCiAgICAgICAgaWYgKGRhbWFnZV9hdmFpbCA+PSBhW24tMV0uZmYpIHsKICAgICAgICAgICAgY291dCA8PCBuIC0gMSA8PCBlbmRsOwogICAgICAgICAgICAvLyBFdmVyeW9uZSBhdHRhY2tzIHRoZSBLaW5nCiAgICAgICAgICAgIGZvcihpbnQgaSA9IDA7IGkgPCBuIC0gMTsgaSsrKSB7CiAgICAgICAgICAgICAgICBjb3V0IDw8IGFbaV0uc3MgPDwgIiAiIDw8IGFbbi0xXS5zcyA8PCBlbmRsOwogICAgICAgICAgICB9CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgY291dCA8PCAtMSA8PCBlbmRsOwogICAgICAgIH0KICAgICAgICByZXR1cm47CiAgICB9CgoKICAgIGlmIChuID09IG0pIHsKICAgICAgICBjb3V0IDw8IDAgPDwgZW5kbDsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgdmVjdG9yPHBhaXI8aW50LCBpbnQ+PiBtb3ZlczsKICAgIAogICAgZm9yIChpbnQgaSA9IDA7IGkgPCBuIC0gbSAtIDE7IGkrKykgewogICAgICAgIG1vdmVzLnBiKHthW2ldLnNzLCBhW2krMV0uc3N9KTsKICAgIH0KCiAgICBtb3Zlcy5wYih7YVtuLW0tMV0uc3MsIGFbbi0xXS5zc30pOwoKICAgIGNvdXQgPDwgc3oobW92ZXMpIDw8IGVuZGw7CiAgICBmb3IoYXV0byBwIDogbW92ZXMpIHsKICAgICAgICBjb3V0IDw8IHAuZmYgPDwgIiAiIDw8IHAuc3MgPDwgZW5kbDsKICAgIH0KfQoKaW50MzJfdCBtYWluKCkgewogICAgZmFzdF9pbzsKICAgIGludCB0OwogICAgY2luID4+IHQ7CiAgICB3aGlsZSh0LS0pIHsKICAgICAgICBzb2x2ZSgpOwogICAgfQogICAgcmV0dXJuIDA7Cn0=
Nwo0IDIKMSA0IDIgMwoyIDIKNiA3CjMgMAoxIDIgMwozIDEKMSAyIDMKMyAyCjEgMiAzCjQgMQoyIDMgNCA1CjYgMAo5OTgyNDQzNTMgMTAwMDAwMDAwMCAzMTQxNTkyNjUgNjc2NzY3Njc3IDk5OTk5OTk5OSA5ODc2NTQzMjEK
7
4 2
1 4 2 3
2 2
6 7
3 0
1 2 3
3 1
1 2 3
3 2
1 2 3
4 1
2 3 4 5
6 0
998244353 1000000000 314159265 676767677 999999999 987654321