/* paiza POH!vol.2
* result:
* http://p...content-available-to-author-only...a.jp/poh/paizen/result/fac654d9a690bae98e7944ceeddb309a
* author: Leonardone @ NEETSDKASU
*/
#include <stdio.h>
#define SIZE (2000000)
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 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();
for (i = 0; i < N; ++i) {
s = getInt();
t = getInt();
if (s > H || t > W) {
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);
}
return 0;
}
LyogcGFpemEgUE9IIXZvbC4yCiAqIHJlc3VsdDoKICogaHR0cDovL3AuLi5jb250ZW50LWF2YWlsYWJsZS10by1hdXRob3Itb25seS4uLmEuanAvcG9oL3BhaXplbi9yZXN1bHQvZmFjNjU0ZDlhNjkwYmFlOThlNzk0NGNlZWRkYjMwOWEKICogYXV0aG9yOiBMZW9uYXJkb25lIEAgTkVFVFNES0FTVQogKi8KI2luY2x1ZGUgPHN0ZGlvLmg+CgojZGVmaW5lIFNJWkUgKDIwMDAwMDApCgpjaGFyIGlucHV0W1NJWkVdOwpjaGFyICpwdHIgPSBpbnB1dDsKCmludCBnZXRJbnQodm9pZCkgewoJaW50IHYgPSAwOwoJd2hpbGUgKCpwdHIgPCAnMCcgfHwgKnB0ciA+ICc5JykgKytwdHI7Cgl3aGlsZSAoKnB0ciA+PSAnMCcgJiYgKnB0ciA8PSAnOScpCgl7CgkJdiA9IDEwICogdiArIChpbnQpKCpwdHIgLSAnMCcpOwoJCSsrcHRyOwoJfQoJcmV0dXJuIHY7Cn0KCmNoYXIgZ2V0Q2hhcih2b2lkKSB7Cgl3aGlsZSAoKnB0ciA8ICcwJyB8fCAqcHRyID4gJzknKSArK3B0cjsKCXJldHVybiAqcHRyKys7Cn0KCnZvaWQgcHV0SW50KGludCB2KSB7CglpZiAodiA8IDEwKSB7CgkJcHV0Y2hhcignMCcgKyAoY2hhcil2KTsKCX0gZWxzZSB7CgkJcHV0SW50KHYgLyAxMCk7CgkJcHV0Y2hhcignMCcgKyAoY2hhcikodiAlIDEwKSk7Cgl9Cn0KCmludCBob21lWzMxMF1bMzEwXTsKaW50IGhvZ2VbMzEwXVszMTBdOwoKaW50IG1haW4odm9pZCkgewoJaW50IEgsIFcsIE4sIHMsIHQ7CglpbnQgeCwgeSwgYywgaTsKCWludCBoeCwgaHksIGh4ZSwgaHllOwoJaW50IGNvdW50LCBkeSwgZHg7CgljaGFyIGNoOwoJCglmcmVhZChpbnB1dCwgc2l6ZW9mKGNoYXIpLCBTSVpFLCBzdGRpbik7CglIID0gZ2V0SW50KCk7CglXID0gZ2V0SW50KCk7CgkKCWZvciAoeSA9IDA7IHkgPCBIOyArK3kpIHsKCQljID0gMDsKCQlmb3IgKHggPSAwOyB4IDwgVzsgKyt4KSB7CgkJCWNoID0gZ2V0Q2hhcigpOwoJCQlpZiAoY2ggPT0gJzAnKSB7CgkJCQljKys7CgkJCQlpZiAoeSkgewoJCQkJCWhvZ2VbeV1beF0gPSBob2dlW3kgLSAxXVt4XSArIDE7CgkJCQl9IGVsc2UgewoJCQkJCWhvZ2VbeV1beF0gPSAxOwoJCQkJfQoJCQl9IGVsc2UgewoJCQkJYyA9IDA7CgkJCQlob2dlW3ldW3hdID0gMDsKCQkJfQoJCQlob21lW3ldW3hdID0gYzsKCQl9Cgl9CgkKCU4gPSBnZXRJbnQoKTsKCQoJZm9yIChpID0gMDsgaSA8IE47ICsraSkgewoJCXMgPSBnZXRJbnQoKTsKCQl0ID0gZ2V0SW50KCk7CgkJCgkJaWYgKHMgPiBIIHx8IHQgPiBXKSB7CgkJCXB1dGNoYXIoJzAnKTsKCQkJcHV0Y2hhcignXG4nKTsKCQkJY29udGludWU7CgkJfQoJCQoJCWh5ZSA9IHMgLSAxOwoJCWh4ZSA9IHQgLSAxOwoJCWNvdW50ID0gMDsKCQlmb3IgKGh5ID0gSCAtIDE7IGh5ID49IGh5ZTsgLS1oeSkgewoJCQlmb3IgKGh4ID0gIFcgLSAxOyBoeCA+PSBoeGU7IC0taHgpIHsKCQkJCWlmIChob21lW2h5XVtoeF0gPCB0KSB7CgkJCQkJaHggLT0gaG9tZVtoeV1baHhdOwoJCQkJCWNvbnRpbnVlOwoJCQkJfQoJCQkJaWYgKGhvZ2VbaHldW2h4XSA8IHMpIHsKCQkJCQljb250aW51ZTsKCQkJCX0KCQkJCWZvciAoZHkgPSAxOyBkeSA8IHM7ICsrZHkpIHsKCQkJCQl5ID0gaHkgLSBkeTsKCQkJCQlpZiAoeSA8IDApIHsKCQkJCQkJYnJlYWs7CgkJCQkJfQoJCQkJCWlmIChob21lW3ldW2h4XSA8IHQpIHsKCQkJCQkJYnJlYWs7CgkJCQkJfQoJCQkJfQoJCQkJaWYgKGR5ID09IHMpIHsKCQkJCQljb3VudCsrOwoJCQkJfQoJCQl9CgkJfQoJCXB1dEludChjb3VudCk7CgkJcHV0Y2hhcignXG4nKTsKCX0KCQoJcmV0dXJuIDA7Cn0K