/*Code by HsonW, 11/2 NH-Hue. Just a newbie <3*/
/*Toi Yeu Khanh Huyen <3*/
#include <bits/stdc++.h>
using namespace std;
using ll = long long;
struct DSU {
vector<int> p, r;
vector<ll> sz;
DSU(int n): p(n), r(n), sz(n) { iota(p.begin(), p.end(), 0); }
int find(int x){ return p[x]==x?x:p[x]=find(p[x]); }
void unite(int a, int b){
a = find(a); b = find(b);
if(a==b) return;
if(r[a]<r[b]) swap(a,b);
p[b]=a; sz[a]+=sz[b];
if(r[a]==r[b]) r[a]++;
}
};
signed main(){
#define name "K Huyen"
ios::sync_with_stdio(0);
cin.tie(NULL);
if(fopen(name ".inp","r")){
freopen(name ".inp","r",stdin);
freopen(name ".out","w",stdout);
}
int T;
cin >> T;
while(T--){
int n;
cin >> n;
string s;
cin >> s;
s = " " + s;
vector<int> u(n+1,-1), l(n+1,-1), d(n+1,-1);
int id=0;
for(int i=1;i<=n;i++){
if(s[i]=='0' && i>1) u[i]=id++;
if(s[i]=='0' && i<n) l[i]=id++;
if(s[i]=='1') d[i]=id++;
}
DSU ds(id);
for(int i=1;i<=n;i++){
if(u[i]>=0) ds.sz[u[i]] = i-1;
if(l[i]>=0) ds.sz[l[i]] = n-i;
if(d[i]>=0) ds.sz[d[i]] = 1;
}
for(int i=2;i<=n;i++){
if(u[i]>=0 && u[i-1]>=0) ds.unite(u[i],u[i-1]);
}
for(int i=1;i<n;i++){
if(l[i]>=0 && l[i+1]>=0) ds.unite(l[i],l[i+1]);
}
for(int i=2;i<=n;i++){
if(d[i]>=0 && l[i-1]>=0) ds.unite(d[i],l[i-1]);
}
for(int i=1;i<n;i++){
if(d[i]>=0 && u[i+1]>=0) ds.unite(d[i],u[i+1]);
}
for(int i=2;i<=n;i++){
if(u[i]>=0 && d[i-1]>=0) ds.unite(u[i],d[i-1]);
}
for(int i=1;i<n;i++){
if(l[i]>=0 && d[i+1]>=0) ds.unite(l[i],d[i+1]);
}
ll ans=0;
for(int i=0;i<id;i++){
if(ds.find(i)==i) ans = max(ans, ds.sz[i]);
}
cout << ans << "\n";
}
return 0;
}
LypDb2RlIGJ5IEhzb25XLCAxMS8yIE5ILUh1ZS4gSnVzdCBhIG5ld2JpZSA8MyovCi8qVG9pIFlldSBLaGFuaCBIdXllbiA8MyovCiNpbmNsdWRlIDxiaXRzL3N0ZGMrKy5oPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwp1c2luZyBsbCA9IGxvbmcgbG9uZzsKCnN0cnVjdCBEU1UgewogICAgdmVjdG9yPGludD4gcCwgcjsKICAgIHZlY3RvcjxsbD4gc3o7CiAgICBEU1UoaW50IG4pOiBwKG4pLCByKG4pLCBzeihuKSB7IGlvdGEocC5iZWdpbigpLCBwLmVuZCgpLCAwKTsgfQogICAgaW50IGZpbmQoaW50IHgpeyByZXR1cm4gcFt4XT09eD94OnBbeF09ZmluZChwW3hdKTsgfQogICAgdm9pZCB1bml0ZShpbnQgYSwgaW50IGIpewogICAgICAgIGEgPSBmaW5kKGEpOyBiID0gZmluZChiKTsKICAgICAgICBpZihhPT1iKSByZXR1cm47CiAgICAgICAgaWYoclthXTxyW2JdKSBzd2FwKGEsYik7CiAgICAgICAgcFtiXT1hOyBzelthXSs9c3pbYl07CiAgICAgICAgaWYoclthXT09cltiXSkgclthXSsrOwogICAgfQp9OwoKc2lnbmVkIG1haW4oKXsKICAgICNkZWZpbmUgbmFtZSAiSyBIdXllbiIKICAgIGlvczo6c3luY193aXRoX3N0ZGlvKDApOwogICAgY2luLnRpZShOVUxMKTsKICAgIGlmKGZvcGVuKG5hbWUgIi5pbnAiLCJyIikpewogICAgICAgIGZyZW9wZW4obmFtZSAiLmlucCIsInIiLHN0ZGluKTsKICAgICAgICBmcmVvcGVuKG5hbWUgIi5vdXQiLCJ3IixzdGRvdXQpOwogICAgfQogICAgaW50IFQ7CiAgICBjaW4gPj4gVDsKICAgIHdoaWxlKFQtLSl7CiAgICAgICAgaW50IG47CiAgICAgICAgY2luID4+IG47CiAgICAgICAgc3RyaW5nIHM7CiAgICAgICAgY2luID4+IHM7CiAgICAgICAgcyA9ICIgIiArIHM7CiAgICAgICAgdmVjdG9yPGludD4gdShuKzEsLTEpLCBsKG4rMSwtMSksIGQobisxLC0xKTsKICAgICAgICBpbnQgaWQ9MDsKICAgICAgICBmb3IoaW50IGk9MTtpPD1uO2krKyl7CiAgICAgICAgICAgIGlmKHNbaV09PScwJyAmJiBpPjEpIHVbaV09aWQrKzsKICAgICAgICAgICAgaWYoc1tpXT09JzAnICYmIGk8bikgbFtpXT1pZCsrOwogICAgICAgICAgICBpZihzW2ldPT0nMScpICAgICAgZFtpXT1pZCsrOwogICAgICAgIH0KICAgICAgICBEU1UgZHMoaWQpOwogICAgICAgIGZvcihpbnQgaT0xO2k8PW47aSsrKXsKICAgICAgICAgICAgaWYodVtpXT49MCkgZHMuc3pbdVtpXV0gPSBpLTE7CiAgICAgICAgICAgIGlmKGxbaV0+PTApIGRzLnN6W2xbaV1dID0gbi1pOwogICAgICAgICAgICBpZihkW2ldPj0wKSBkcy5zeltkW2ldXSA9IDE7CiAgICAgICAgfQogICAgICAgIGZvcihpbnQgaT0yO2k8PW47aSsrKXsKICAgICAgICAgICAgaWYodVtpXT49MCAmJiB1W2ktMV0+PTApIGRzLnVuaXRlKHVbaV0sdVtpLTFdKTsKICAgICAgICB9CiAgICAgICAgZm9yKGludCBpPTE7aTxuO2krKyl7CiAgICAgICAgICAgIGlmKGxbaV0+PTAgJiYgbFtpKzFdPj0wKSBkcy51bml0ZShsW2ldLGxbaSsxXSk7CiAgICAgICAgfQogICAgICAgIGZvcihpbnQgaT0yO2k8PW47aSsrKXsKICAgICAgICAgICAgaWYoZFtpXT49MCAmJiBsW2ktMV0+PTApIGRzLnVuaXRlKGRbaV0sbFtpLTFdKTsKICAgICAgICB9CiAgICAgICAgZm9yKGludCBpPTE7aTxuO2krKyl7CiAgICAgICAgICAgIGlmKGRbaV0+PTAgJiYgdVtpKzFdPj0wKSBkcy51bml0ZShkW2ldLHVbaSsxXSk7CiAgICAgICAgfQogICAgICAgIGZvcihpbnQgaT0yO2k8PW47aSsrKXsKICAgICAgICAgICAgaWYodVtpXT49MCAmJiBkW2ktMV0+PTApIGRzLnVuaXRlKHVbaV0sZFtpLTFdKTsKICAgICAgICB9CiAgICAgICAgZm9yKGludCBpPTE7aTxuO2krKyl7CiAgICAgICAgICAgIGlmKGxbaV0+PTAgJiYgZFtpKzFdPj0wKSBkcy51bml0ZShsW2ldLGRbaSsxXSk7CiAgICAgICAgfQogICAgICAgIGxsIGFucz0wOwogICAgICAgIGZvcihpbnQgaT0wO2k8aWQ7aSsrKXsKICAgICAgICAgICAgaWYoZHMuZmluZChpKT09aSkgYW5zID0gbWF4KGFucywgZHMuc3pbaV0pOwogICAgICAgIH0KICAgICAgICBjb3V0IDw8IGFucyA8PCAiXG4iOwogICAgfQogICAgcmV0dXJuIDA7Cn0K