t = int(input())
for _ in range(t):
s = input()
n, m = map(int, input().split())
a = []
for i in range(m):
x, w = map(int, input().split())
a.append([w, x, i+1])
a.sort()
a = a[:2*n]
a.sort(key=lambda x: x[1])
sm = 0
for i in range(len(a)):
sm += a[i][0]
print(sm)
for i in range(len(a) // 2):
print(a[i][2], a[-i-1][2])
print()
#include <bits/stdc++.h>
using namespace std;
#define ll int
int main(){
ll t;
cin>>t;
for(ll alpha=0;alpha<t;alpha++){
ll n,m;
cin>>n>>m;
vector<ll> x(m);
vector<ll> w(m);
vector<pair<ll,ll>> v;
vector<pair<ll,ll>> v1;
map<pair<ll,ll>,int> ma;
for(ll i=0;i<m;i++){
cin>>x[i]>>w[i];
v.push_back({w[i],x[i]});
ma[{x[i],w[i]}]=i+1;
}
sort(v.begin(),v.end());
ll ans=0;
for(ll i=0;i<2*n;i++){
ans+=v[i].first;
v1.push_back({v[i].second,v[i].first});
}
sort(v1.begin(),v1.end());
cout<<ans<<endl;
for(ll i=0;i<n;i++){
cout<<ma[v1[i]]<<" "<<ma[v1[2*n-1-i]]<<endl;
}
}
return 0;
}
922A - Cloning Toys | 817A - Treasure Hunt |
1136B - Nastya Is Playing Computer Games | 1388A - Captain Flint and Crew Recruitment |
592B - The Monster and the Squirrel | 1081A - Definite Game |
721C - Journey | 1400A - String Similarity |
1734E - Rectangular Congruence | 1312D - Count the Arrays |
424C - Magic Formulas | 1730C - Minimum Notation |
1730B - Meeting on the Line | 1730A - Planets |
302B - Eugeny and Play List | 1730D - Prefixes and Suffixes |
1515C - Phoenix and Towers | 998A - Balloons |
1734F - Zeros and Ones | 1144B - Parity Alternated Deletions |
92B - Binary Number | 1144C - Two Shuffled Sequences |
1154B - Make Them Equal | 1272B - Snow Walking Robot |
522B - Photo to Remember | 608B - Hamming Distance Sum |
1408F - Two Different | 274B - Zero Tree |
1726H - Mainak and the Bleeding Polygon | 722A - Broken Clock |