![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/0d7fe6042f0541a1132454c006dc635d.png)
#include <iostream>
#include <cstring>
#include <algorithm>
#include <vector>
#include <set>
using namespace std;
const int N = 100010,mod = 1e9+7;
void solve()
{
int n;cin>>n;
multiset<int>s;
vector<bool>vis(n+1,false);
for(int i=1,x;i<=n;i++)
{
cin>>x;
if(x<=n&&!vis[x])
{
vis[x]=true;
continue;
}
s.insert(x);
}
int res=0;
for(int i=1;i<=n;i++)
{
if(vis[i])continue;
if(*s.begin()-*s.begin()/2>i)
{
s.erase(s.begin());
res++;
}
else {cout<<-1<<'\n';return ;}
}
cout<<res<<'\n';
}
signed main()
{
int T;cin>>T;
while(T--)solve();
}