#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef pair <int, int> ii;
const ll LINF = 1e18;
const int INF = 1e9;
const int N = 2e5 + 5;
struct node {
int pref[2], suf[2], mx[2];
int len = 0;
node() {
memset(pref, 0, sizeof pref);
memset(suf, 0, sizeof suf);
memset(mx, 0, sizeof mx);
}
node(int x) {
if (x == 0) {
pref[1] = suf[1] = mx[1] = 0;
pref[0] = suf[0] = mx[0] = 1;
}
else {
pref[0] = suf[0] = mx[0] = 0;
pref[1] = suf[1] = mx[1] = 1;
}
len = 1;
}
node operator+(const node& other) const {
node res;
for (int i = 0; i <= 1; i++) {
res.pref[i] = (pref[i] == len) ? pref[i] + other.pref[i] : pref[i];
res.suf[i] = (other.suf[i] == other.len) ? other.suf[i] + suf[i] : other.suf[i];
res.mx[i] = max({mx[i], other.mx[i], suf[i] + other.pref[i]});
}
res.len = len + other.len;
return res;
}
};
int n, q;
string s;
int a[N];
node seg[4 * N];
void build(int id, int l, int r) {
if (l == r) {
seg[id] = node(a[l]);
return;
}
int mid = (l + r) >> 1;
build(id * 2, l, mid);
build(id * 2 + 1, mid + 1, r);
seg[id] = seg[id * 2] + seg[id * 2 + 1];
}
void update(int id, int l, int r, int pos, int val) {
if (l > pos || r < pos) return;
if (l == r) {
seg[id] = node(val);
return;
}
int mid = (l + r) >> 1;
update(id * 2, l, mid, pos, val);
update(id * 2 + 1, mid + 1, r, pos, val);
seg[id] = seg[id * 2] + seg[id * 2 + 1];
}
node get(int id, int l, int r, int u, int v) {
if (l > v || r < u) return node();
if (u <= l && r <= v) return seg[id];
int mid = (l + r) >> 1;
return get(id * 2, l, mid, u, v) + get(id * 2 + 1, mid + 1, r, u, v);
}
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
cin >> s;
n = (int)s.size();
for (int i = 1; i <= n; i++) a[i] = s[i - 1] - '0';
build(1, 1, n);
cin >> q;
while (q--) {
int pos; cin >> pos;
a[pos] ^= 1;
update(1, 1, n, pos, a[pos]);
cout << max(seg[1].mx[0], seg[1].mx[1]) << " ";
}
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7IAoKdHlwZWRlZiBsb25nIGxvbmcgbGw7IAp0eXBlZGVmIHBhaXIgPGludCwgaW50PiBpaTsgCgpjb25zdCBsbCBMSU5GID0gMWUxODsgCmNvbnN0IGludCBJTkYgPSAxZTk7CmNvbnN0IGludCBOID0gMmU1ICsgNTsgCgpzdHJ1Y3Qgbm9kZSB7CglpbnQgcHJlZlsyXSwgc3VmWzJdLCBteFsyXTsgCglpbnQgbGVuID0gMDsgIAoKCW5vZGUoKSB7CgkJbWVtc2V0KHByZWYsIDAsIHNpemVvZiBwcmVmKTsKCQltZW1zZXQoc3VmLCAwLCBzaXplb2Ygc3VmKTsgCgkJbWVtc2V0KG14LCAwLCBzaXplb2YgbXgpOyAKCX0KCglub2RlKGludCB4KSB7CgkJaWYgKHggPT0gMCkgewoJCQlwcmVmWzFdID0gc3VmWzFdID0gbXhbMV0gPSAwOyAKCQkJcHJlZlswXSA9IHN1ZlswXSA9IG14WzBdID0gMTsgIAoJCX0KCQllbHNlIHsKCQkJcHJlZlswXSA9IHN1ZlswXSA9IG14WzBdID0gMDsgCgkJCXByZWZbMV0gPSBzdWZbMV0gPSBteFsxXSA9IDE7IAoJCX0KCQlsZW4gPSAxOyAJCgl9CgoJbm9kZSBvcGVyYXRvcisoY29uc3Qgbm9kZSYgb3RoZXIpIGNvbnN0IHsKCQlub2RlIHJlczsgCgkJZm9yIChpbnQgaSA9IDA7IGkgPD0gMTsgaSsrKSB7CgkJCXJlcy5wcmVmW2ldID0gKHByZWZbaV0gPT0gbGVuKSA/IHByZWZbaV0gKyBvdGhlci5wcmVmW2ldIDogcHJlZltpXTsgCgkJCXJlcy5zdWZbaV0gPSAob3RoZXIuc3VmW2ldID09IG90aGVyLmxlbikgPyBvdGhlci5zdWZbaV0gKyBzdWZbaV0gOiBvdGhlci5zdWZbaV07IAoJCQlyZXMubXhbaV0gPSBtYXgoe214W2ldLCBvdGhlci5teFtpXSwgc3VmW2ldICsgb3RoZXIucHJlZltpXX0pOyAKCQl9CgkJcmVzLmxlbiA9IGxlbiArIG90aGVyLmxlbjsgCgkJcmV0dXJuIHJlczsgCgl9Cn07IAoKaW50IG4sIHE7ICAKc3RyaW5nIHM7IAppbnQgYVtOXTsgCm5vZGUgc2VnWzQgKiBOXTsKCnZvaWQgYnVpbGQoaW50IGlkLCBpbnQgbCwgaW50IHIpIHsKCWlmIChsID09IHIpIHsKCQlzZWdbaWRdID0gbm9kZShhW2xdKTsKCQlyZXR1cm47IAoJfQoKCWludCBtaWQgPSAobCArIHIpID4+IDE7CglidWlsZChpZCAqIDIsIGwsIG1pZCk7IAoJYnVpbGQoaWQgKiAyICsgMSwgbWlkICsgMSwgcik7IAoKCXNlZ1tpZF0gPSBzZWdbaWQgKiAyXSArIHNlZ1tpZCAqIDIgKyAxXTsgCn0KCnZvaWQgdXBkYXRlKGludCBpZCwgaW50IGwsIGludCByLCBpbnQgcG9zLCBpbnQgdmFsKSB7CglpZiAobCA+IHBvcyB8fCByIDwgcG9zKSByZXR1cm47IAoKCWlmIChsID09IHIpIHsKCQlzZWdbaWRdID0gbm9kZSh2YWwpOyAKCQlyZXR1cm47IAoJfQoKCWludCBtaWQgPSAobCArIHIpID4+IDE7IAoJdXBkYXRlKGlkICogMiwgbCwgbWlkLCBwb3MsIHZhbCk7IAoJdXBkYXRlKGlkICogMiArIDEsIG1pZCArIDEsIHIsIHBvcywgdmFsKTsgCgoJc2VnW2lkXSA9IHNlZ1tpZCAqIDJdICsgc2VnW2lkICogMiArIDFdOyAKfQoKbm9kZSBnZXQoaW50IGlkLCBpbnQgbCwgaW50IHIsIGludCB1LCBpbnQgdikgewoJaWYgKGwgPiB2IHx8IHIgPCB1KSByZXR1cm4gbm9kZSgpOyAKCglpZiAodSA8PSBsICYmIHIgPD0gdikgcmV0dXJuIHNlZ1tpZF07IAoKCWludCBtaWQgPSAobCArIHIpID4+IDE7IAoJcmV0dXJuIGdldChpZCAqIDIsIGwsIG1pZCwgdSwgdikgKyBnZXQoaWQgKiAyICsgMSwgbWlkICsgMSwgciwgdSwgdik7Cn0KCmludCBtYWluKCkgewoJaW9zOjpzeW5jX3dpdGhfc3RkaW8oMCk7IAoJY2luLnRpZSgwKTsgCgljaW4gPj4gczsgCgluID0gKGludClzLnNpemUoKTsgCglmb3IgKGludCBpID0gMTsgaSA8PSBuOyBpKyspIGFbaV0gPSBzW2kgLSAxXSAtICcwJzsgCgoJYnVpbGQoMSwgMSwgbik7IAoKCWNpbiA+PiBxOyAKCXdoaWxlIChxLS0pIHsKCQlpbnQgcG9zOyBjaW4gPj4gcG9zOwoKCQlhW3Bvc10gXj0gMTsgCgkJdXBkYXRlKDEsIDEsIG4sIHBvcywgYVtwb3NdKTsgIAoJCgkJY291dCA8PCBtYXgoc2VnWzFdLm14WzBdLCBzZWdbMV0ubXhbMV0pIDw8ICIgIjsgCgl9Cn0=