#include <bits/stdc++.h>
using namespace std;
const long double PI = acos(-1.0);
int dp[16][1 << 15][16];
pair<int, int> pt[16][1 << 15][16];
int a[15];
int sm[1 << 15];
void solve() {
  int n;
  cin >> n;
  for (int i = 0; i < n; ++i) {
    cin >> a[i];
  }
  for (int i = 0; i < 1 << n; ++i) {
    sm[i] = 0;
    for (int j = 0; j < n; ++j) {
      if ((i >> j) & 1) sm[i] += a[j];
    }
    for (int j = 0; j < n + 1; ++j) {
      for (int k = 0; k < n + 1; ++k) {
        dp[j][i][k] = 1000000007;
      }
    }
  }
  dp[0][0][0] = 0;
  for (int cnt = 0; cnt < n; ++cnt) {
    for (int mask = 0; mask < (1 << n) - 1; ++mask) {
      for (int pos = 0; pos < n; ++pos) {
        if (dp[cnt][mask][pos] == 1000000007) continue;
        int m = (((1 << n) - 1) ^ mask);
        for (int nmask = m; nmask; nmask = (nmask - 1) & m) {
          if (sm[nmask] > dp[cnt][mask][pos] && (nmask >> pos)) {
            int npos = pos + __builtin_ctz(nmask >> pos) + 1;
            if (dp[cnt + 1][mask | nmask][npos] > sm[nmask]) {
              dp[cnt + 1][mask | nmask][npos] = sm[nmask];
              pt[cnt + 1][mask | nmask][npos] = make_pair(mask, pos);
            }
          }
        }
      }
    }
  }
  int mxcnt = 0;
  int mxpos = 0;
  for (int i = 1; i < n + 1; ++i) {
    for (int j = 1; j < n + 1; ++j) {
      if (dp[i][(1 << n) - 1][j] != 1000000007) {
        mxcnt = i;
        mxpos = j;
      }
    }
  }
  int curmask = (1 << n) - 1;
  vector<pair<int, int> > ans;
  vector<pair<int, int> > finans;
  for (int i = mxcnt; i >= 1; --i) {
    auto par = pt[i][curmask][mxpos];
    int prevmask = par.first;
    int prevpos = par.second;
    int extra = curmask ^ prevmask;
    for (int i = 0; i < n; ++i) {
      if ((extra >> i) & 1 and i != mxpos - 1) {
        ans.push_back(make_pair(i + 1, mxpos));
      }
    }
    mxpos = prevpos;
    curmask = prevmask;
  }
  vector<int> v(n);
  iota(v.begin(), v.end(), 1);
  for (auto i : ans) {
    int f = 0, s = 0;
    for (int j = 0; j < (int)v.size(); ++j) {
      if (v[j] == i.first) {
        f = j + 1;
      } else if (v[j] == i.second) {
        s = j + 1;
      }
    }
    v.erase(v.begin() + f - 1);
    finans.push_back(make_pair(f, s));
  }
  cout << (int)finans.size() << '\n';
  for (auto i : finans) {
    cout << i.first << ' ' << i.second << '\n';
  }
}
signed main() {
  ios_base::sync_with_stdio(false);
  cin.tie(0);
  cout.tie(0);
  int t = 1;
  cin >> t;
  while (t--) {
    solve();
  }
  return 0;
}
