#include <iostream>
using namespace std;
int a[200005],p[200005];
bool check(int x)
{
bool flag=false,flag2=true;
int cn2t=0;
for (int i=1;i<=200000;i++)
{
if (p[i]>=1) cn2t++;
if (p[i]>=x) flag=true;
if (p[i]>x) flag2=false;
}
if (x==1)
{
return (cn2t>=2);
}
else
{
return (flag && cn2t-flag2>=x);
}
}
int main()
{
int t;
cin>>t;
while (t--)
{
memset(p,0,sizeof(p));
int n;
cin>>n;
for (int i=1;i<=n;i++)
{
cin>>a[i];
p[a[i]]++;
}
int l=1,r=n;
if (n==1)
{
cout<<0<<endl;
continue;
}
while (l<r)
{
int mid=ceil((l+r)/2.0);
if (check(mid))
{
l=mid;
}
else
{
r=mid-1;
}
}
cout<<l<<endl;
}
return 0;
}