#include <bits/stdc++.h>
using namespace std;
const int M = 32769;
const int N = 16;
const int Inf = 0x3f3f3f3f;
long long R() {
  long long ans = 0, f = 1;
  char c = getchar();
  for (; c < '0' || c > '9'; c = getchar())
    if (c == '-') f = -1;
  for (; c >= '0' && c <= '9'; c = getchar()) ans = ans * 10 + c - '0';
  return ans * f;
}
int cnt[M], sum[M];
int n, a[N], dp[16][16][M], m, pr[16][16][M], a1, a2, ans, pr2[16][16][M],
    rk[N];
void Era(int x) {
  for (int i = x; i <= n; ++i) rk[i]--;
}
void Work() {
  n = R();
  m = (1 << n) - 1;
  for (int i = 0; i <= n - 1; ++i) a[i] = R();
  for (int i = 0; i <= n; ++i)
    for (int i2 = 0; i2 <= n; ++i2)
      for (int j = 0; j <= m; ++j) dp[i][i2][j] = Inf;
  dp[0][0][0] = 0;
  for (int C = 0; C <= m; ++C) {
    sum[C] = 0;
    for (int k = 0; k <= n - 1; ++k)
      if ((C >> k) & 1) sum[C] += a[k];
  }
  ans = n + 1;
  for (int i = 0; i <= n; ++i)
    for (int j = 0; j <= i; ++j)
      for (int c = 0; c <= m; ++c) {
        if (dp[i][j][c] >= 100000000) continue;
        for (int nx = i; nx <= n - 1; ++nx) {
          if ((((c) >> nx) & 1) == 1) continue;
          int lft = m - c - (1 << nx);
          for (int c2 = lft;; c2 = (c2 - 1) & lft) {
            if (a[nx] + sum[c2] > dp[i][j][c]) {
              if (dp[nx + 1][j + 1][c | c2 | (1 << nx)] < a[nx] + sum[c2])
                continue;
              dp[nx + 1][j + 1][c | c2 | (1 << nx)] = a[nx] + sum[c2];
              pr[nx + 1][j + 1][c | c2 | (1 << nx)] = c2;
              pr2[nx + 1][j + 1][c | c2 | (1 << nx)] = i;
            }
            if (c2 == 0) break;
          }
        }
        if (c == m && n - j < ans) {
          ans = n - j;
          a1 = i;
          a2 = c;
        }
      }
  cout << ans << '\n';
  ans = n - ans;
  for (int i = 1; i <= n; ++i) rk[i] = i;
  while (ans) {
    for (int k = 0; k <= n - 1; ++k)
      if ((pr[a1][ans][a2] >> k) & 1)
        cout << rk[k + 1] << ' ' << rk[a1] << '\n', Era(k + 1);
    int nxa1 = pr2[a1][ans][a2], nxa2 = a2 - pr[a1][ans][a2] - (1 << (a1 - 1));
    a1 = nxa1, a2 = nxa2, ans--;
  }
}
int main() {
  for (int i = 1; i <= M - 1; ++i) cnt[i] = cnt[i >> 1] + (i & 1);
  int ttt = R();
  while (ttt--) Work();
  return 0;
}
