#include <bits/stdc++.h>
using namespace std;
using ll = long long;
using db = double;
using pii = pair<int, int>;
using vi = vector<int>;
const int N = 15, inf = 1e9;
int _, n, a[N + 1], sum[1 << N], f[N + 1][1 << N][N + 1], id[N + 1];
pii p[N + 1][1 << N][N + 1];
signed main() {
  for (scanf("%d", &_); _; _--) {
    scanf("%d", &n);
    for (int i = 1; i <= n; i++) scanf("%d", &a[i]);
    for (int msk = 1; msk < 1 << n; msk++)
      sum[msk] = sum[msk ^ (msk & -msk)] + a[__builtin_ffs(msk)];
    for (int i = 0; i <= n; i++)
      for (int msk = 0; msk < 1 << n; msk++)
        for (int j = 0; j <= n; j++) f[i][msk][j] = inf;
    f[0][0][0] = 0;
    for (int i = 0; i < n; i++)
      for (int msk = 0; msk < 1 << n; msk++)
        for (int j = 0; j < n; j++)
          if (f[i][msk][j] != inf) {
            int rmsk = msk ^ ((1 << n) - 1);
            for (int nmsk = rmsk; nmsk; nmsk = (nmsk - 1) & rmsk) {
              if (sum[nmsk] <= f[i][msk][j] || !(nmsk >> j)) continue;
              int k = j + __builtin_ffs(nmsk >> j);
              if (f[i + 1][msk | nmsk][k] > sum[nmsk]) {
                f[i + 1][msk | nmsk][k] = sum[nmsk];
                p[i + 1][msk | nmsk][k] = make_pair(msk, j);
              }
            }
          }
    int ai, aj;
    for (int i = 0; i <= n; i++)
      for (int j = 0; j <= n; j++)
        if (f[i][(1 << n) - 1][j] != inf) ai = i, aj = j;
    vector<pii> ans;
    for (int i = 0; i < n; i++) id[i] = i + 1;
    for (int i = ai, msk = (1 << n) - 1, j = aj; i; i--) {
      int pmsk = p[i][msk][j].first, pj = p[i][msk][j].second;
      for (int bt = 0; bt < n; bt++)
        if (((msk ^ pmsk) >> bt & 1) && bt != j - 1)
          ans.push_back(make_pair(bt, j - 1));
      msk = pmsk, j = pj;
    }
    printf("%d\n", ans.size());
    for (pii i : ans) {
      printf("%d %d\n", id[i.first], id[i.second]);
      id[i.first] = -1;
      for (int j = i.first; j < n; j++)
        if (id[j] != -1) id[j]--;
    }
  }
  fprintf(stderr, "time=%.4f\n", (db)clock() / CLOCKS_PER_SEC);
  return 0;
}
