#include using namespace std; const long long mod = 1e9 + 7; int main() { int h, w; cin >> h >> w; vector> a(h, vector(w)); for (int i = 0; i < h; i++) { for (int j = 0; j < w; j++) { cin >> a[i][j]; } } vector> b = a; for (int i = 0; i < h; i++) { for (int j = 0; j < w; j++) { if (j + 1 < w) { b[i][j + 1] *= b[i][j]; b[i][j + 1] %= mod; } } } for (int i = 0; i < h; i++) { for (int j = 0; j < w; j++) { if (i + 1 < h) { b[i + 1][j] *= b[i][j]; b[i + 1][j] %= mod; } } } vector> c = a; for (int i = 0; i < h; i++) { for (int j = w - 1; j >= 0; j--) { if (j - 1 >= 0) { c[i][j - 1] *= c[i][j]; c[i][j - 1] %= mod; } } } for (int i = 0; i < h; i++) { for (int j = 0; j < w; j++) { if (i + 1 < h) { c[i + 1][j] *= c[i][j]; c[i + 1][j] %= mod; } } } vector> d = a; for (int i = 0; i < h; i++) { for (int j = 0; j < w; j++) { if (j + 1 < w) { d[i][j + 1] *= d[i][j]; d[i][j + 1] %= mod; } } } for (int i = h - 1; i >= 0; i--) { for (int j = 0; j < w; j++) { if (i - 1 >= 0) { d[i - 1][j] *= d[i][j]; d[i - 1][j] %= mod; } } } vector> e = a; for (int i = 0; i < h; i++) { for (int j = w - 1; j >= 0; j--) { if (j - 1 >= 0) { e[i][j - 1] *= e[i][j]; e[i][j - 1] %= mod; } } } for (int i = h - 1; i >= 0; i--) { for (int j = 0; j < w; j++) { if (i - 1 >= 0) { e[i - 1][j] *= e[i][j]; e[i - 1][j] %= mod; } } } int q; cin >> q; while (q--) { int x, y; cin >> x >> y; x--; y--; long long ans = 1; if (x - 1 >= 0 && y - 1 >= 0) ans *= b[x - 1][y - 1]; ans %= mod; if (x - 1 >= 0 && y + 1 < w) ans *= c[x - 1][y + 1]; ans %= mod; if (x + 1 < h && y - 1 >= 0) ans *= d[x + 1][y - 1]; ans %= mod; if (x + 1 < h && y + 1 < w) ans *= e[x + 1][y + 1]; ans %= mod; cout << ans << endl; } return 0; }