#include<iostream>
#include<queue>
using namespace std;
typedef pair<int,int> P;
int t;
int n;
long long ans=0;
priority_queue<P>a;
struct T{
int x,y;
}an[200005];
int cnt=0;
int main(){
cin>>t;
while(t--){
ans=0;
cin>>n;
for(int i=1;i<=n;i++){
int x;cin>>x;
if(x==0) continue;
a.push(P(x,i));
}
while(a.size()>1){
P p1=a.top();
a.pop();
P p2=a.top();
a.pop();
ans++;
an[ans].x=p1.second;
an[ans].y=p2.second;
p1.first--;
if(p1.first){
a.push(p1);
}
p2.first--;
if(p2.first){
a.push(p2);
}
}
cout<<ans<<endl;
for(int i=1;i<=ans;i++){
cout<<an[i].x<<" "<<an[i].y<<endl;
}
while(a.size()) a.pop();
}
}
贪心:每次选择谈话次数最多的两个