#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int Mod=998244353;
void solve() {
int n;
cin >> n;
string s;
cin >> s;
if(n==1){
cout << ((s[0]=='1')?2:1) << '\n';
return;
}
int T01=0,T10=0;
int ans=(s[0]=='1')?2:1;
for(int i=0;i<n-1;i++){
if(s[i]=='0' && s[i+1]=='1') T01++;
if(s[i]=='1' && s[i+1]=='0') T10++;
}
int trans=T01+T10;
int swap=0;
if(T01>=2 || T10>=2 || (s[0]=='1' && T01>=1))
swap=2;
if(swap==0){
for(int i=0;i<n-1;i++){
if(s[i]!=s[i+1] && s[i]==s[n-1]){
swap=1;
break;}
}
if(s[0]=='1' && s[n-1]=='0') swap=1;
}
ans+=n+trans-swap;
cout << ans-1 << '\n';
}
int main(){
ios::sync_with_stdio(false);
cin.tie(nullptr);
int t;
cin >> t;
while (t--) solve();
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CnR5cGVkZWYgbG9uZyBsb25nIGxsOwpjb25zdCBpbnQgTW9kPTk5ODI0NDM1MzsKCnZvaWQgc29sdmUoKSB7CiAgIGludCBuOwogICBjaW4gPj4gbjsKICAgc3RyaW5nIHM7CiAgIGNpbiA+PiBzOwogICBpZihuPT0xKXsKICAgIGNvdXQgPDwgKChzWzBdPT0nMScpPzI6MSkgPDwgJ1xuJzsKICAgIHJldHVybjsKICAgfQogICBpbnQgVDAxPTAsVDEwPTA7CiAgIGludCBhbnM9KHNbMF09PScxJyk/MjoxOwoKICAgZm9yKGludCBpPTA7aTxuLTE7aSsrKXsKICAgIGlmKHNbaV09PScwJyAmJiBzW2krMV09PScxJykgVDAxKys7CiAgICBpZihzW2ldPT0nMScgJiYgc1tpKzFdPT0nMCcpIFQxMCsrOwogICB9CgogICBpbnQgdHJhbnM9VDAxK1QxMDsKCiAgIGludCBzd2FwPTA7CiAgIGlmKFQwMT49MiB8fCBUMTA+PTIgfHwgKHNbMF09PScxJyAmJiBUMDE+PTEpKQogICAgc3dhcD0yOwoKICAgaWYoc3dhcD09MCl7CiAgICAgZm9yKGludCBpPTA7aTxuLTE7aSsrKXsKICAgICAgICBpZihzW2ldIT1zW2krMV0gJiYgc1tpXT09c1tuLTFdKXsgCiAgICAgICAgICBzd2FwPTE7CiAgICAgICAgICBicmVhazt9CiAgICAgfQogICAgIGlmKHNbMF09PScxJyAmJiBzW24tMV09PScwJykgc3dhcD0xOwogICB9CiAgIGFucys9bit0cmFucy1zd2FwOwoKICAgY291dCA8PCBhbnMtMSA8PCAnXG4nOwoKfQoKaW50IG1haW4oKXsgCiAgICBpb3M6OnN5bmNfd2l0aF9zdGRpbyhmYWxzZSk7CiAgICBjaW4udGllKG51bGxwdHIpOwoJCiAgICBpbnQgdDsKICAgIGNpbiA+PiB0OwogICAgd2hpbGUgKHQtLSkgc29sdmUoKTsKICAgIAoKICAgIHJldHVybiAwOwp9Cg==