#include "bits/stdc++.h"
// #pragma GCC optimize("O3,unroll-loops")
// #pragma GCC target("avx2,bmi,bmi2,lzcnt,popcnt")
using namespace std;
using ll = long long int;
mt19937_64 rng(chrono::high_resolution_clock::now().time_since_epoch().count());

int main()
{
	ios::sync_with_stdio(false); cin.tie(0);

	int t; cin >> t;
	while (t--) {
		int n; cin >> n;
		vector<int> a(n);
		for (int &x : a) cin >> x;
		sort(begin(a), end(a));
		a.erase(unique(begin(a), end(a)), end(a));
		int mex = 0;
		for (int x : a) {
			if (x == mex) ++mex;
		}
		if (mex == 0) {
			cout << a[0]-1 << '\n';
			continue;
		}
		if (mex == 1) {
			cout << -1 << '\n';
			continue;
		}
		vector<int> longest(a.size());
		longest[0] = 1;
		int ans = 0;
		for (int i = 1; i < a.size(); ++i) {
			if (a[i] == a[i-1] + 1) longest[i] = longest[i-1] + 1;
			else longest[i] = 1;
			if (a[i] >= mex and longest[i] >= mex - 1 and (i+1 == a.size() or a[i]+1 < a[i+1])) ++ans;
		}
		cout << ans << '\n';
	}
}