#include <bits/stdc++.h>
using namespace std;
int main() {
#ifdef LOCAL
  freopen("../IO/d.in", "r", stdin);
//  freopen("../IO/d.out", "w", stdout);
#else
  std::ios_base::sync_with_stdio(false);
  std::cin.tie(nullptr);
  std::cout.tie(nullptr);
#endif
  int number_of_tests;
  cin >> number_of_tests;

  while (number_of_tests--) {
    int n;
    cin >> n;
    std::vector<int> b(n);
    std::vector<int> used(2 * n);
    for (int &i : b) cin >> i, --i, used[i] = 1;
    std::vector<int> unused;
    unused.reserve(n);
    for (int i = 0; i < 2 * n; ++i) {
      if (!used[i]) unused.push_back(i);
    }
    vector<int> c(n + 1, true);
    int l = -1, r = -1;
    auto check1 = [&](int x) {
      deque<int> dq(unused.begin(), unused.end());
      bool ok = true;
      for (int i = x - 1; i >= 0; --i) {
        ok &= b[i] < dq.back();
        dq.pop_back();
      }
      return ok;
    };
    auto check2 = [&](int x) {
      deque<int> dq(unused.begin(), unused.end());
      bool ok = true;
      for (int i = x; i < n; ++i) {
        ok &= b[i] > dq.front();
        dq.pop_front();
      }
      return ok;
    };
    int lo = -1, hi = n + 1;
    while (hi - lo > 1) {
      int x = (lo + hi) / 2;
      if (check1(x)) {
        lo = x;
      } else {
        hi = x;
      }
    }
    l = 0, r = lo;
    lo = -1, hi = n + 1;
    while (hi - lo > 1) {
      int x = (lo + hi) / 2;
      if (check2(x)) {
        hi = x;
      } else {
        lo = x;
      }
    }
    l = std::max(l, hi);
//    std::cout << l << ' ' << r << '\n';
    std::cout << std::max(0, r - l + 1) << '\n';
  }
  return 0;
}


