#include <bits/stdc++.h>
#define mp make_pair
#define pii pair<int, int>
#define MA 10000001
using namespace std;
struct node{
int val;
pii left, right;
node(){
val= 0;
left.first = left.second = MA;
right.first = right.second = -1;
}
void merge(const node& n1, const node& n2, int l, int r){
val = max(n1.val, n2.val);
left = n1.left;
right = n2.right;
int l1 = n1.right.first, l2 = n1.right.second, r1 = n2.left.first, r2 = n2.left.second;
if(l1 != -1 && r1 != MA){
int t1 = l1, t2 = r2;
val = max(val, t2 - t1 + 1);
if(t1 == l) left = mp(t1, t2);
if(t2 == r) right = mp(t1, t2);
}
}
};
node seg[300001];
int val[100001] = {0}, n;
void build(int l, int r, int i){
if(l == r){
if(!val[l]) return;
seg[i].val = 1;
pii p = mp(l, r);
seg[i].left = seg[i].right = p;
return;
}
int mid = (l+r)/2;
build(l, mid, i*2+1);
build(mid+1, r, i*2+2);
seg[i].merge(seg[i*2+1], seg[i*2+2], l, r);
}
void update(int l, int r, int i, int pos){
if(l == r){
seg[i].val = 1;
pii p = mp(l, r);
seg[i].left = seg[i].right = p;
return;
}
int mid = (l+r)/2;
if(mid >= pos) update(l, mid, i*2+1, pos);
else update(mid+1, r, i*2+2, pos);
seg[i].merge(seg[i*2+1], seg[i*2+2], l, r);
}
void print(){
for(int j = 0; j < 9; j++)
cout << j << " --> " << seg[j].val << " (" << seg[j].left.first << " " << seg[j].left.second << ") , (" << seg[j].right.first << " " << seg[j].right.second << ") " << endl;
}
int main(){
ios_base :: sync_with_stdio(0);
cin.tie(0);
int q;
cin >> n >> q;
string s;
cin >> s;
for(int j = 0; j < n; j++)
if(s[j] == '0') val[j] = 0;
else val[j] = 1;
build(0, n-1, 0);
while(q--){
int type;
cin >> type;
if(type == 1) cout << seg[0].val << endl;
else{
int x;
cin >> x;
x--;
if(val[x] == 1) continue;
update(0, n-1, 0, x);
val[x] = 1;
//print();
}
}
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CiNkZWZpbmUgbXAgbWFrZV9wYWlyCiNkZWZpbmUgcGlpIHBhaXI8aW50LCBpbnQ+CiNkZWZpbmUgTUEgMTAwMDAwMDEKCnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgpzdHJ1Y3Qgbm9kZXsKICAgIGludCB2YWw7CiAgICBwaWkgbGVmdCwgcmlnaHQ7CiAgICAKICAgIG5vZGUoKXsKICAgICAgICB2YWw9IDA7CiAgICAgICAgbGVmdC5maXJzdCA9IGxlZnQuc2Vjb25kID0gTUE7CiAgICAgICAgcmlnaHQuZmlyc3QgPSByaWdodC5zZWNvbmQgPSAtMTsKICAgIH0KICAgIAogICAgdm9pZCBtZXJnZShjb25zdCBub2RlJiBuMSwgY29uc3Qgbm9kZSYgbjIsIGludCBsLCBpbnQgcil7CiAgICAgICAgdmFsID0gbWF4KG4xLnZhbCwgbjIudmFsKTsKICAgICAgICBsZWZ0ID0gbjEubGVmdDsKICAgICAgICByaWdodCA9IG4yLnJpZ2h0OwogICAgICAgIAogICAgICAgIGludCBsMSA9IG4xLnJpZ2h0LmZpcnN0LCBsMiA9IG4xLnJpZ2h0LnNlY29uZCwgcjEgPSBuMi5sZWZ0LmZpcnN0LCByMiA9IG4yLmxlZnQuc2Vjb25kOwogICAgICAgIGlmKGwxICE9IC0xICYmIHIxICE9IE1BKXsKICAgICAgICAgICAgaW50IHQxID0gbDEsIHQyID0gcjI7CiAgICAgICAgICAgIHZhbCA9IG1heCh2YWwsIHQyIC0gdDEgKyAxKTsKICAgICAgICAgICAgaWYodDEgPT0gbCkgbGVmdCA9IG1wKHQxLCB0Mik7CiAgICAgICAgICAgIGlmKHQyID09IHIpIHJpZ2h0ID0gbXAodDEsIHQyKTsKICAgICAgICB9CiAgICB9Cn07Cgpub2RlIHNlZ1szMDAwMDFdOwoKaW50IHZhbFsxMDAwMDFdID0gezB9LCBuOwoKdm9pZCBidWlsZChpbnQgbCwgaW50IHIsIGludCBpKXsKICAgIGlmKGwgPT0gcil7CiAgICAgICAgaWYoIXZhbFtsXSkgcmV0dXJuOwogICAgICAgIHNlZ1tpXS52YWwgPSAxOwogICAgICAgIHBpaSBwID0gbXAobCwgcik7CiAgICAgICAgc2VnW2ldLmxlZnQgPSBzZWdbaV0ucmlnaHQgPSBwOwogICAgICAgIHJldHVybjsKICAgIH0KICAgIGludCBtaWQgPSAobCtyKS8yOwogICAgYnVpbGQobCwgbWlkLCBpKjIrMSk7CiAgICBidWlsZChtaWQrMSwgciwgaSoyKzIpOwogICAgc2VnW2ldLm1lcmdlKHNlZ1tpKjIrMV0sIHNlZ1tpKjIrMl0sIGwsIHIpOwp9Cgp2b2lkIHVwZGF0ZShpbnQgbCwgaW50IHIsIGludCBpLCBpbnQgcG9zKXsKICAgIGlmKGwgPT0gcil7CiAgICAgICAgc2VnW2ldLnZhbCA9IDE7CiAgICAgICAgcGlpIHAgPSBtcChsLCByKTsKICAgICAgICBzZWdbaV0ubGVmdCA9IHNlZ1tpXS5yaWdodCA9IHA7CiAgICAgICAgcmV0dXJuOwogICAgfQogICAgaW50IG1pZCA9IChsK3IpLzI7CiAgICBpZihtaWQgPj0gcG9zKSB1cGRhdGUobCwgbWlkLCBpKjIrMSwgcG9zKTsKICAgIGVsc2UgdXBkYXRlKG1pZCsxLCByLCBpKjIrMiwgcG9zKTsKICAgIHNlZ1tpXS5tZXJnZShzZWdbaSoyKzFdLCBzZWdbaSoyKzJdLCBsLCByKTsKfQoKdm9pZCBwcmludCgpewogICAgZm9yKGludCBqID0gMDsgaiA8IDk7IGorKykKICAgICAgICBjb3V0IDw8IGogPDwgIiAtLT4gIiA8PCBzZWdbal0udmFsIDw8ICIgKCIgPDwgc2VnW2pdLmxlZnQuZmlyc3QgPDwgIiAiIDw8ICBzZWdbal0ubGVmdC5zZWNvbmQgPDwgIikgLCAoIiA8PCBzZWdbal0ucmlnaHQuZmlyc3QgPDwgIiAiIDw8IHNlZ1tqXS5yaWdodC5zZWNvbmQgPDwgIikgIiA8PCBlbmRsOwp9CgppbnQgbWFpbigpewogICAgaW9zX2Jhc2UgOjogc3luY193aXRoX3N0ZGlvKDApOwogICAgY2luLnRpZSgwKTsKICAgIAogICAgaW50IHE7CiAgICBjaW4gPj4gbiA+PiBxOwogICAgc3RyaW5nIHM7CiAgICBjaW4gPj4gczsKICAgIGZvcihpbnQgaiA9IDA7IGogPCBuOyBqKyspCiAgICAgICAgaWYoc1tqXSA9PSAnMCcpIHZhbFtqXSA9IDA7CiAgICAgICAgZWxzZSB2YWxbal0gPSAxOwogICAgICAgIAogICAgYnVpbGQoMCwgbi0xLCAwKTsKICAgIHdoaWxlKHEtLSl7CiAgICAgICAgaW50IHR5cGU7CiAgICAgICAgY2luID4+IHR5cGU7CiAgICAgICAgaWYodHlwZSA9PSAxKSBjb3V0IDw8IHNlZ1swXS52YWwgPDwgZW5kbDsKICAgICAgICBlbHNlewogICAgICAgICAgICBpbnQgeDsKICAgICAgICAgICAgY2luID4+IHg7CiAgICAgICAgICAgIHgtLTsKICAgICAgICAgICAgaWYodmFsW3hdID09IDEpIGNvbnRpbnVlOwogICAgICAgICAgICB1cGRhdGUoMCwgbi0xLCAwLCB4KTsKICAgICAgICAgICAgdmFsW3hdID0gMTsKICAgICAgICAgICAgLy9wcmludCgpOwogICAgICAgIH0KICAgIH0KICAgIHJldHVybiAwOwp9