#include <bits/stdc++.h>
int main() {
  std::ios_base::sync_with_stdio(false);
  std::cin.tie(nullptr);
  std::function<int(int)> fact;
  fact = [&](int x) { return x == 0 ? 1 : x * fact(x - 1); };
  auto perm_to_num = [&](const std::vector<int> &x) {
    int s = 1, e = fact(x.size());
    std::vector<int> pos(x.size() + 1);
    std::iota(pos.begin(), pos.end(), 0);
    for (int i = 0; i < x.size(); ++i) {
      int size = fact(x.size() - i - 1);
      s += size * (pos[x[i]] - 1);
      e = s + size - 1;
      for (int j = x[i] + 1; j <= x.size(); ++j) {
        pos[j]--;
      }
    }
    return s;
  };
  auto num_to_perm = [&](int n, int x) {
    std::vector<int> ans;
    int s = 1, e = fact(n);
    std::vector<int> pos(n + 1);
    std::iota(pos.begin(), pos.end(), 0);
    for (int i = 0; i < n; ++i) {
      int size = fact(n - i - 1);
      for (int j = 1; j <= n; ++j) {
        int _s = s + size * (pos[j] - 1);
        int _e = _s + size - 1;
        if (_s <= x and x <= _e) {
          s = _s;
          e = _e;
          pos[j] = -100000;
          ans.push_back(j);
          break;
        }
      }
      for (int j = ans.back() + 1; j <= n; ++j) {
        pos[j]--;
      }
    }
    return ans;
  };
  std::vector ans(9, std::vector<int>(40321, 1000));
  for (int n = 1; n <= 8; ++n) {
    ans[n][fact(n)] = 0;
    std::queue<int> q;
    std::vector<bool> vis(40321);
    q.push(fact(n));
    while (!q.empty()) {
      auto node = q.front();
      q.pop();
      if (vis[node]) {
        continue;
      }
      vis[node] = true;
      auto a = num_to_perm(n, node);
      for (int i = 0; i < n; ++i) {
        std::reverse(a.begin() + i, a.end());
        auto nb = perm_to_num(a);
        if (ans[n][nb] > ans[n][node] + 1) {
          ans[n][nb] = ans[n][node] + 1;
          q.push(nb);
        }
        std::reverse(a.begin() + i, a.end());
      }
    }
  }
  int t;
  std::cin >> t;
  while (t--) {
    int n;
    std::cin >> n;
    std::vector<std::pair<int, int>> x(n);
    for (int i = 0; i < n; ++i) {
      std::cin >> x[i].first;
      x[i].second = i;
    }
    std::sort(x.begin(), x.end());
    std::vector<int> a(n);
    for (int i = 0; i < n; ++i) {
      a[x[i].second] = i + 1;
    }
    std::cout << ans[n][perm_to_num(a)] << '\n';
  }
}
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... |