/* paiza POH!vol.2
* result:
* http://p...content-available-to-author-only...a.jp/poh/paizen/result/e370e3de4bfd72adab6ff141d565b5cd
* author: Leonardone @ NEETSDKASU
*/
#include <stdio.h>
#define SIZE (9000000)
char input[SIZE];
char *ptr = input;
int getInt(void) {
int v = 0;
while (*ptr < '0' || *ptr > '9') ++ptr;
while (*ptr >= '0' && *ptr <= '9')
{
v = 10 * v + (int)(*ptr - '0');
++ptr;
}
return v;
}
char getChar(void) {
while (*ptr < '0' || *ptr > '9') ++ptr;
return *ptr++;
}
void putInt(int v) {
if (v < 10) {
} else {
putInt(v / 10);
}
}
int home[310][310];
int hoge[310][310];
int result[310][310];
int main(void) {
int H, W, N, s, t;
int x, y, c, i;
int hx, hy, hxe, hye;
int count, dy, dx;
char ch;
fread(input
, sizeof(char), SIZE
, stdin
); H = getInt();
W = getInt();
for (y = 0; y < H; ++y) {
c = 0;
for (x = 0; x < W; ++x) {
ch = getChar();
if (ch == '0') {
c++;
if (y) {
hoge[y][x] = hoge[y - 1][x] + 1;
} else {
hoge[y][x] = 1;
}
} else {
c = 0;
hoge[y][x] = 0;
}
home[y][x] = c;
}
}
N = getInt();
if (W > H) {
for (i = 0; i < N; ++i) {
s = getInt();
t = getInt();
if (s > H || t > W) {
continue;
}
if (result[s][t]) {
putInt(result[s][t] - 1);
continue;
}
hye = s - 1;
hxe = t - 1;
count = 0;
for (hy = H - 1; hy >= hye; --hy) {
for (hx = W - 1; hx >= hxe; --hx) {
if (home[hy][hx] < t) {
hx -= home[hy][hx];
continue;
}
if (hoge[hy][hx] < s) {
continue;
}
for (dy = 1; dy < s; ++dy) {
y = hy - dy;
if (y < 0) {
break;
}
if (home[y][hx] < t) {
break;
}
}
if (dy == s) {
count++;
}
}
}
putInt(count);
result[s][t] = count + 1;
}
} else {
for (i = 0; i < N; ++i) {
s = getInt();
t = getInt();
if (s > H || t > W) {
continue;
}
if (result[s][t]) {
putInt(result[s][t] - 1);
continue;
}
hye = s - 1;
hxe = t - 1;
count = 0;
for (hx = W - 1; hx >= hxe; --hx) {
for (hy = H - 1; hy >= hye; --hy) {
if (home[hy][hx] < t) {
continue;
}
if (hoge[hy][hx] < s) {
hy -= hoge[hy][hx];
continue;
}
for (dy = 1; dy < s; ++dy) {
y = hy - dy;
if (y < 0) {
break;
}
if (home[y][hx] < t) {
break;
}
}
if (dy == s) {
count++;
}
}
}
putInt(count);
result[s][t] = count + 1;
}
}
return 0;
}
LyogcGFpemEgUE9IIXZvbC4yCiAqIHJlc3VsdDoKICogaHR0cDovL3AuLi5jb250ZW50LWF2YWlsYWJsZS10by1hdXRob3Itb25seS4uLmEuanAvcG9oL3BhaXplbi9yZXN1bHQvZTM3MGUzZGU0YmZkNzJhZGFiNmZmMTQxZDU2NWI1Y2QKICogYXV0aG9yOiBMZW9uYXJkb25lIEAgTkVFVFNES0FTVQogKi8KI2luY2x1ZGUgPHN0ZGlvLmg+CgojZGVmaW5lIFNJWkUgKDkwMDAwMDApCgpjaGFyIGlucHV0W1NJWkVdOwpjaGFyICpwdHIgPSBpbnB1dDsKCmludCBnZXRJbnQodm9pZCkgewoJaW50IHYgPSAwOwoJd2hpbGUgKCpwdHIgPCAnMCcgfHwgKnB0ciA+ICc5JykgKytwdHI7Cgl3aGlsZSAoKnB0ciA+PSAnMCcgJiYgKnB0ciA8PSAnOScpCgl7CgkJdiA9IDEwICogdiArIChpbnQpKCpwdHIgLSAnMCcpOwoJCSsrcHRyOwoJfQoJcmV0dXJuIHY7Cn0KCmNoYXIgZ2V0Q2hhcih2b2lkKSB7Cgl3aGlsZSAoKnB0ciA8ICcwJyB8fCAqcHRyID4gJzknKSArK3B0cjsKCXJldHVybiAqcHRyKys7Cn0KCnZvaWQgcHV0SW50KGludCB2KSB7CglpZiAodiA8IDEwKSB7CgkJcHV0Y2hhcignMCcgKyAoY2hhcil2KTsKCX0gZWxzZSB7CgkJcHV0SW50KHYgLyAxMCk7CgkJcHV0Y2hhcignMCcgKyAoY2hhcikodiAlIDEwKSk7Cgl9Cn0KCmludCBob21lWzMxMF1bMzEwXTsKaW50IGhvZ2VbMzEwXVszMTBdOwppbnQgcmVzdWx0WzMxMF1bMzEwXTsKCmludCBtYWluKHZvaWQpIHsKCWludCBILCBXLCBOLCBzLCB0OwoJaW50IHgsIHksIGMsIGk7CglpbnQgaHgsIGh5LCBoeGUsIGh5ZTsKCWludCBjb3VudCwgZHksIGR4OwoJY2hhciBjaDsKCQoJZnJlYWQoaW5wdXQsIHNpemVvZihjaGFyKSwgU0laRSwgc3RkaW4pOwoJSCA9IGdldEludCgpOwoJVyA9IGdldEludCgpOwoJCglmb3IgKHkgPSAwOyB5IDwgSDsgKyt5KSB7CgkJYyA9IDA7CgkJZm9yICh4ID0gMDsgeCA8IFc7ICsreCkgewoJCQljaCA9IGdldENoYXIoKTsKCQkJaWYgKGNoID09ICcwJykgewoJCQkJYysrOwoJCQkJaWYgKHkpIHsKCQkJCQlob2dlW3ldW3hdID0gaG9nZVt5IC0gMV1beF0gKyAxOwoJCQkJfSBlbHNlIHsKCQkJCQlob2dlW3ldW3hdID0gMTsKCQkJCX0KCQkJfSBlbHNlIHsKCQkJCWMgPSAwOwoJCQkJaG9nZVt5XVt4XSA9IDA7CgkJCX0KCQkJaG9tZVt5XVt4XSA9IGM7CgkJfQoJfQoJCglOID0gZ2V0SW50KCk7CgkKCglpZiAoVyA+IEgpIHsKCQlmb3IgKGkgPSAwOyBpIDwgTjsgKytpKSB7CgkJCXMgPSBnZXRJbnQoKTsKCQkJdCA9IGdldEludCgpOwoJCQkKCQkJaWYgKHMgPiBIIHx8IHQgPiBXKSB7CgkJCQlwdXRjaGFyKCcwJyk7CgkJCQlwdXRjaGFyKCdcbicpOwoJCQkJY29udGludWU7CgkJCX0KCQkJCgkJCWlmIChyZXN1bHRbc11bdF0pIHsKCQkJCXB1dEludChyZXN1bHRbc11bdF0gLSAxKTsKCQkJCXB1dGNoYXIoJ1xuJyk7CgkJCQljb250aW51ZTsKCQkJfQoJCQkKCQkJaHllID0gcyAtIDE7CgkJCWh4ZSA9IHQgLSAxOwoJCQljb3VudCA9IDA7CgkJCWZvciAoaHkgPSBIIC0gMTsgaHkgPj0gaHllOyAtLWh5KSB7CgkJCQlmb3IgKGh4ID0gIFcgLSAxOyBoeCA+PSBoeGU7IC0taHgpIHsKCQkJCQlpZiAoaG9tZVtoeV1baHhdIDwgdCkgewoJCQkJCQloeCAtPSBob21lW2h5XVtoeF07CgkJCQkJCWNvbnRpbnVlOwoJCQkJCX0KCQkJCQlpZiAoaG9nZVtoeV1baHhdIDwgcykgewoJCQkJCQljb250aW51ZTsKCQkJCQl9CgkJCQkJZm9yIChkeSA9IDE7IGR5IDwgczsgKytkeSkgewoJCQkJCQl5ID0gaHkgLSBkeTsKCQkJCQkJaWYgKHkgPCAwKSB7CgkJCQkJCQlicmVhazsKCQkJCQkJfQoJCQkJCQlpZiAoaG9tZVt5XVtoeF0gPCB0KSB7CgkJCQkJCQlicmVhazsKCQkJCQkJfQoJCQkJCX0KCQkJCQlpZiAoZHkgPT0gcykgewoJCQkJCQljb3VudCsrOwoJCQkJCX0KCQkJCX0KCQkJfQoJCQlwdXRJbnQoY291bnQpOwoJCQlwdXRjaGFyKCdcbicpOwoJCQlyZXN1bHRbc11bdF0gPSBjb3VudCArIDE7CgkJfQoJfSBlbHNlIHsKCQlmb3IgKGkgPSAwOyBpIDwgTjsgKytpKSB7CgkJCXMgPSBnZXRJbnQoKTsKCQkJdCA9IGdldEludCgpOwoJCQkKCQkJaWYgKHMgPiBIIHx8IHQgPiBXKSB7CgkJCQlwdXRjaGFyKCcwJyk7CgkJCQlwdXRjaGFyKCdcbicpOwoJCQkJY29udGludWU7CgkJCX0KCQkJCgkJCWlmIChyZXN1bHRbc11bdF0pIHsKCQkJCXB1dEludChyZXN1bHRbc11bdF0gLSAxKTsKCQkJCXB1dGNoYXIoJ1xuJyk7CgkJCQljb250aW51ZTsKCQkJfQoJCQkKCQkJaHllID0gcyAtIDE7CgkJCWh4ZSA9IHQgLSAxOwoJCQljb3VudCA9IDA7CgkJCWZvciAoaHggPSAgVyAtIDE7IGh4ID49IGh4ZTsgLS1oeCkgewoJCQkJZm9yIChoeSA9IEggLSAxOyBoeSA+PSBoeWU7IC0taHkpIHsKCQkJCQlpZiAoaG9tZVtoeV1baHhdIDwgdCkgewoJCQkJCQljb250aW51ZTsKCQkJCQl9CgkJCQkJaWYgKGhvZ2VbaHldW2h4XSA8IHMpIHsKCQkJCQkJaHkgLT0gaG9nZVtoeV1baHhdOwoJCQkJCQljb250aW51ZTsKCQkJCQl9CgkJCQkJZm9yIChkeSA9IDE7IGR5IDwgczsgKytkeSkgewoJCQkJCQl5ID0gaHkgLSBkeTsKCQkJCQkJaWYgKHkgPCAwKSB7CgkJCQkJCQlicmVhazsKCQkJCQkJfQoJCQkJCQlpZiAoaG9tZVt5XVtoeF0gPCB0KSB7CgkJCQkJCQlicmVhazsKCQkJCQkJfQoJCQkJCX0KCQkJCQlpZiAoZHkgPT0gcykgewoJCQkJCQljb3VudCsrOwoJCQkJCX0KCQkJCX0KCQkJfQoJCQlwdXRJbnQoY291bnQpOwoJCQlwdXRjaGFyKCdcbicpOwoJCQlyZXN1bHRbc11bdF0gPSBjb3VudCArIDE7CgkJfQoJfQoJCglyZXR1cm4gMDsKfQo=