#include <iostream>
#include <string>
#include <vector>
using namespace std;
int maxConsecutiveOnes(string s) {
int maxCount = 0, currentCount = 0, totalOnes = 0;
vector<int> counts;
for (char c : s) {
if (c == '1') {
currentCount++;
} else {
if (currentCount > 0) {
counts.push_back(currentCount);
totalOnes += currentCount;
currentCount = 0;
}
}
}
if (currentCount > 0) {
counts.push_back(currentCount);
totalOnes += currentCount;
}
if (counts.empty()) return 0;
maxCount = counts[0];
for (size_t i = 0; i < counts.size(); ++i) {
maxCount = max(maxCount, counts[i]);
if (i < counts.size() - 1) {
maxCount = max(maxCount, counts[i] + counts[i + 1]);
}
}
int numberOfFlips = s.length() - totalOnes;
if (numberOfFlips >= 1) {
maxCount = max(maxCount, totalOnes + numberOfFlips);
}
return maxCount;
}
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;
}