#include<bits/stdc++.h>
using namespace std;
#define int long long
#define mod 1000000007
void solve(){
int n;cin>>n;
int v[n];
set<pair<int,int>>s;
int k=1;
for(int i=0;i<n;i++){
cin>>v[i];
if(v[i]!=0)s.insert({v[i],k});
k++;
}
vector<pair<int,int>>ans;
while(s.size()>1){
auto st=s.begin();
auto end=s.end();
end--;
s.erase(st);
s.erase(end);
s.insert({(*end).first-1,(*end).second});
if((*st).first>1)s.insert({(*st).first-1,(*st).second});
ans.push_back({(*st).second,(*end).second});
}
cout<<ans.size()<<endl;
for(int i=0;i<ans.size();i++){
cout<<ans[i].first<<" "<<ans[i].second<<endl;
}
}
int32_t main(){
ios_base::sync_with_stdio(false);
cin.tie(NULL);
int t;cin>>t;
while(t--){
solve();
}
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKI2RlZmluZSBpbnQgbG9uZyBsb25nCiNkZWZpbmUgbW9kIDEwMDAwMDAwMDcKCgp2b2lkIHNvbHZlKCl7CiAgIGludCBuO2Npbj4+bjsKICAgaW50IHZbbl07CiAgIHNldDxwYWlyPGludCxpbnQ+PnM7CiAgIGludCBrPTE7CiAgIGZvcihpbnQgaT0wO2k8bjtpKyspewogICAgICAgY2luPj52W2ldOwogICAgICAgaWYodltpXSE9MClzLmluc2VydCh7dltpXSxrfSk7CiAgICAgICBrKys7CiAgIH0KICAgdmVjdG9yPHBhaXI8aW50LGludD4+YW5zOwogICB3aGlsZShzLnNpemUoKT4xKXsKICAgICAgIGF1dG8gc3Q9cy5iZWdpbigpOwogICAgICAgYXV0byBlbmQ9cy5lbmQoKTsKICAgICAgIGVuZC0tOwogICAgICAgcy5lcmFzZShzdCk7CiAgICAgICBzLmVyYXNlKGVuZCk7CiAgICAgICBzLmluc2VydCh7KCplbmQpLmZpcnN0LTEsKCplbmQpLnNlY29uZH0pOwogICAgICAgaWYoKCpzdCkuZmlyc3Q+MSlzLmluc2VydCh7KCpzdCkuZmlyc3QtMSwoKnN0KS5zZWNvbmR9KTsKICAgICAgICAgICBhbnMucHVzaF9iYWNrKHsoKnN0KS5zZWNvbmQsKCplbmQpLnNlY29uZH0pOwogICAgICAgCiAgIH0KICAgIGNvdXQ8PGFucy5zaXplKCk8PGVuZGw7CiAgICBmb3IoaW50IGk9MDtpPGFucy5zaXplKCk7aSsrKXsKICAgICAgICBjb3V0PDxhbnNbaV0uZmlyc3Q8PCIgIjw8YW5zW2ldLnNlY29uZDw8ZW5kbDsKICAgIH0KfQppbnQzMl90IG1haW4oKXsKICAgIGlvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW8oZmFsc2UpOwogICAgY2luLnRpZShOVUxMKTsKICAgIAogICBpbnQgdDtjaW4+PnQ7CiAgICB3aGlsZSh0LS0pewogICAgICAgIHNvbHZlKCk7CiAgICB9Cn0=