#include <bits/stdc++.h>
using namespace std;
int a[500000], ll[500001], rr[500001];
vector<pair<int, int> > v;
priority_queue<int, vector<int>, greater<int> > H;
int main() {
  int i;
  int t, n;
  scanf("%d", &t);
  while (t--) {
    int z = 0;
    scanf("%d", &n);
    for (i = 0; i < n; i++) scanf("%d", &a[i]), z += (a[i] == 0);
    int p = 0;
    for (i = 0; i < n; i++) {
      if (a[i] != 0) {
        if (p <= z / 2)
          ll[a[i]] = max(ll[a[i]], p);
        else
          rr[a[i]] = max(rr[a[i]], min(z - p, z / 2));
      } else
        p++;
    }
    for (i = 1; i <= n; i++) {
      if (ll[i] + rr[i] >= z / 2) ll[i] = z / 2, rr[i] = 0;
      v.push_back(make_pair(ll[i], rr[i])), ll[i] = rr[i] = 0;
    }
    int j = 0;
    sort(v.begin(), v.end());
    for (i = 0; i < z / 2; i++) {
      while ((j < v.size()) && (v[j].first <= i)) j++;
      if (j >= v.size())
        break;
      else
        j++;
    }
    p = i, j = v.size() - 1;
    for (i = p - 1; i >= 0; i--) {
      while ((j >= 0) && (v[j].first > i)) H.push(v[j].second), j--;
      H.pop();
    }
    while (j >= 0) H.push(v[j].second), j--;
    for (i = 0; i < z / 2 - p; i++) {
      while (!H.empty() && (H.top() <= i)) H.pop();
      if (H.empty())
        break;
      else
        H.pop();
    }
    printf("%d\n", p + i);
    v.clear();
    while (!H.empty()) H.pop();
  }
  return 0;
}
