#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N = 201000;
int t;
int main()
{
cin>>t;
while(t--)
{
int n,a[N]={0},b[N]={0},ans=0,res=0,ok=1;
cin>>n;
for(int i=1;i<=n;i++)
{
cin>>a[i];
if(a[i]==0) ans++;
b[a[i]]++;
}
for(int i=0;i<=101;i++)
{
if(b[i]>1)
{
ok=0;
break;
}
}
if(ans!=0) cout<<n-ans<<'\n';
else if(ok==0) cout<<n<<'\n';
else cout<<n+1<<'\n';
}
return 0;
}
/*
有0则n-ans
有相同数则ans==n
其他n+1
*/
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N = 201000;
int t;
int main()
{
cin>>t;
while(t--)
{
int n,m,m1,yi=0,ou=0,z=0,op=0,a[N]={0},z1=0,b[N]={0},z2=0;cin>>n;string s;cin>>s;
for(int i=0;i<n;i++)
{
if(s[i]=='1')
{
yi++;
if(ou!=0)
{
a[++z]=ou;
ou=0;
}
}
else
{
ou++;
if(yi!=0)
{
a[++z]=yi;
yi=0;
}
}
}
if(yi!=0) a[++z]=yi;
else if(ou!=0) a[++z]=ou;
for(int i=1;i<=z;i++)
{
// cout<<a[i]<<"-";
if(a[i]%2!=0&&a[i]!=0)
{
z2++;
if(z2%2==0) op+=i-m;
m=i;
}
}
cout<<op<<'\n';
}
return 0;
}
/*
把相连的1和0看成整体,每对奇数整体之间的距离即是最小操作数
*/
由于博主比较菜,只会这两题,方法还不是最好方法,请见谅!大家都在成长中!