#include <bits/stdc++.h>
using namespace std;
const int INF = 0x3f3f3f3f;
const int MAXN = 15;
pair<int, int> pre[MAXN][MAXN][1 << MAXN];
int dp[MAXN][MAXN][1 << MAXN];
int n, a[MAXN], sum[1 << MAXN];
vector<pair<int, int> > V;
bool era[MAXN];
int id[MAXN + 1];
void print(int i, int j, int mask) {
  if (j == 1) {
    era[i] = 1;
    return;
  }
  int smask = mask ^ (1 << i) ^ pre[i][j][mask].second;
  era[i] = 1;
  for (int x = 0; x < n; ++x) {
    if ((smask >> x) & 1) {
      era[x] = 1;
      V.push_back(make_pair(x + 1, i + 1));
    }
  }
  print(pre[i][j][mask].first, j - 1, pre[i][j][mask].second);
}
int G[MAXN + 1];
void solve() {
  scanf("%d", &n);
  bool ok = 1;
  for (int i = 0; i < n; ++i)
    G[i + 1] = 1, era[i] = 0, scanf("%d", &a[i]), ok &= (!i || a[i] > a[i - 1]);
  if (ok) {
    puts("0");
    return;
  }
  for (int mask = 0; mask < 1 << n; ++mask) {
    for (int j = 0; j < n; ++j) {
      if ((mask >> j) & 1) sum[mask] = sum[mask ^ (1 << j)] + a[j];
    }
  }
  for (int i = 0; i < n; ++i)
    for (int j = 0; j < n; ++j)
      for (int mask = 0; mask < 1 << n; ++mask) dp[i][j][mask] = INF;
  for (int i = 0; i < n; ++i) dp[i][1][((1 << n) - 1) ^ (1 << i)] = a[i];
  for (int i = 0; i < n; ++i)
    for (int j = 0; j < n; ++j)
      for (int mask = 0; mask < 1 << n; ++mask)
        if (dp[i][j][mask] <= 2e7) {
          for (int k = i + 1; k <= n - 1; ++k) {
            if ((mask >> k) & 1) {
              for (int smask = mask ^ (1 << k);;
                   smask = (mask ^ (1 << k)) & (smask - 1)) {
                if (sum[smask] + a[k] > dp[i][j][mask]) {
                  if (sum[smask] + a[k] <
                      dp[k][j + 1][mask ^ (1 << k) ^ smask]) {
                    dp[k][j + 1][mask ^ (1 << k) ^ smask] = sum[smask] + a[k];
                    pre[k][j + 1][mask ^ (1 << k) ^ smask] = make_pair(i, mask);
                  }
                }
                if (!smask) break;
              }
            }
          }
        }
  int best, I, J, K;
  best = 1e9;
  for (int i = 0; i < n; ++i)
    for (int j = 0; j < n; ++j)
      for (int mask = 0; mask < 1 << n; ++mask)
        if (dp[i][j][mask] <= 2e7 && n - j < best) {
          best = n - j;
          I = i, J = j, K = mask;
        }
  V.clear();
  print(I, J, K);
  for (int i = 0; i < n; ++i)
    if (!era[i]) V.push_back(make_pair(i + 1, I + 1));
  cout << V.size() << endl;
  for (auto it : V) {
    int A = 0, B = 0;
    for (int i = 1; i <= it.first; ++i) A += G[i];
    for (int i = 1; i <= it.second; ++i) B += G[i];
    cout << A << " " << B << endl;
    G[it.first] = 0;
  }
}
int main() {
  int T;
  cin >> T;
  while (T--) solve();
  return 0;
}
