#include <iostream>
#include <string>
#include <vector>
using namespace std;
int maxConsecutiveOnes(string s) {
int maxCount = 0, currentCount = 0;
vector<int> counts;
for (char c : s) {
if (c == '1') {
currentCount++;
} else {
if (currentCount > 0) {
counts.push_back(currentCount);
currentCount = 0;
}
}
}
if (currentCount > 0) {
counts.push_back(currentCount);
}
if (counts.empty()) return 0;
int totalOnes = 0;
for (int count : counts) {
totalOnes += count;
}
int maxConsecutive = 0;
for (size_t i = 0; i < counts.size(); ++i) {
maxConsecutive = max(maxConsecutive, counts[i]);
if (i < counts.size() - 1) {
maxConsecutive = max(maxConsecutive, counts[i] + counts[i + 1]);
}
}
int numberOfFlips = (s.length() - totalOnes);
if (numberOfFlips >= 1) {
maxConsecutive = max(maxConsecutive, totalOnes + numberOfFlips);
}
return maxConsecutive;
}
int main() {
int T;
cin >> T;
while (T--) {
int N;
cin >> N;
string S;
cin >> S;
int result = maxConsecutiveOnes(S);
cout << result << endl;
}
return 0;
}