#include <iostream>
using namespace std;
//类似前缀和
int main() {
int n;
cin >> n;
string str;
cin >> str;
long long ans[200005] = {};
int tmp;
if (str[0] == '0') {
ans[0] = 0;
tmp = 1;
} else {
ans[0] = 1;
tmp = 0;
}
for (int i = 1; i < str.length(); i++) {
if (str[i] == '0') {
ans[i] = ans[i - 1] + i - tmp;
tmp += 1;
} else {
ans[i] = ans[i - 1] + i + 1;
tmp = 0;
}
}
int loc_l1[200005] = {}, l1 = -1;
for (int i = 0; i < str.length(); i++) {
if (str[i] == '1') {
l1 = i;
loc_l1[i] = l1;
} else {
loc_l1[i] = l1;
}
}
int loc_r1[200005] = {}, r1 = -1;
for (int i = str.length() - 1; i >= 0; i--) {
if (str[i] == '1') {
r1 = i;
loc_r1[i] = r1;
} else {
loc_r1[i] = r1;
}
}
int q;
cin >> q;
int l, r, k1, k2;
long long res = 0;
for (int i = 0; i < q; i++) {
cin >> l >> r;
if (l == 1) {
cout << ans[r - 1] << endl;
continue;
} else if (l == r) {
cout << str[l - 1] << endl;
continue;
} else {
if (str[l - 1] == '1') {
cout << ans[r - 1] - ans[l - 2] - (long long)(l - 1) * (long long)(
r - l + 1) << endl;
continue;
} else {
k1 = loc_l1[l - 1];
k2 = loc_r1[l - 1];
res = ans[r - 1] - ans[l - 2];
if (k1 != -1) {
res = res - (long long)(k1 + 1) * (long long)(r - l + 1);
}
if (k2 != -1 && k2 <= r - 1) {
res = res - (long long)(r - k2) * (long long)(l - 1);
}
if (k1 != -1 && k2 != -1 && k2 <= r - 1) {
res = res + (long long)(k1 + 1) * (long long)(r - k2);
}
cout << res << endl;
continue;
}
}
}
}
// 64 位输出请用 printf("%lld")