#include <bits/stdc++.h>
const int N = 16;
int n;
int a[N];
int dp[1 << N][N][N];
int sum[1 << N];
std::pair<int, int> path[1 << N][N][N];
int main() {
  int T;
  scanf("%d", &T);
  while (T--) {
    scanf("%d", &n);
    for (int i = 0; i < n; ++i) scanf("%d", &a[i]);
    for (int mask = 0; mask < (1 << n); ++mask) {
      sum[mask] = 0;
      for (int i = 0; i < n; ++i)
        if (mask >> i & 1) sum[mask] += a[i];
    }
    for (int mask = 0; mask < (1 << n); ++mask)
      for (int i = 0; i <= n; ++i)
        for (int j = 0; j <= n; ++j) dp[mask][i][j] = 0x3f3f3f3f;
    dp[0][0][0] = 0;
    for (int i = 0; i < n; ++i)
      for (int mask = 0; mask < (1 << n); ++mask)
        for (int j = 0; j < n; ++j)
          if (dp[mask][i][j] != 0x3f3f3f3f) {
            int rev = ((1 << n) - 1) ^ mask;
            for (int _mask = rev; _mask; _mask = (_mask - 1) & rev) {
              if (dp[mask][i][j] >= sum[_mask]) continue;
              if (!(_mask >> j)) continue;
              int _j = j + __builtin_ctz(_mask >> j) + 1;
              if (dp[mask | _mask][i + 1][_j] > sum[_mask]) {
                dp[mask | _mask][i + 1][_j] = sum[_mask];
                path[mask | _mask][i + 1][_j] = std::make_pair(mask, j);
              }
            }
          }
    int cnt = 0, pos = 0;
    for (int i = 0; i <= n; ++i)
      for (int j = 0; j <= n; ++j)
        if (dp[(1 << n) - 1][i][j] != 0x3f3f3f3f) cnt = i, pos = j;
    std::vector<std::pair<int, int> > ans;
    int mask = (1 << n) - 1;
    for (int i = cnt; i; --i) {
      int _mask = path[mask][i][pos].first;
      int _pos = path[mask][i][pos].second;
      for (int j = 0; j < n; ++j)
        if ((mask ^ _mask) >> j & 1)
          if (j != pos - 1) ans.push_back(std::make_pair(j, pos - 1));
      mask = _mask;
      pos = _pos;
    }
    printf("%u\n", ans.size());
    for (int i = 0; i < (int)ans.size(); ++i) {
      int u = ans[i].first, v = ans[i].second;
      for (int j = 0; j < i; ++j) {
        u -= ans[i].first > ans[j].first;
        v -= ans[i].second > ans[j].first;
      }
      printf("%d %d\n", u + 1, v + 1);
    }
  }
  return 0;
}
