![在这里插入图片描述](https://img-blog.csdnimg.cn/91a16136d6574e589d65936131a7cc78.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAV0FXQea6kA==,size_20,color_FFFFFF,t_70,g_se,x_16)
#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();
}