#include using namespace std; const int mod = 1000000007; inline long long modpow(long long a,long long b,long long m) { long long ans = 1; while(b) { if(b & 1) { (ans *= a) %= m; } (a *= a) %= m; b /= 2; } return ans; } int main() { int H,W; cin >> H >> W; vector>A(H,vector(W)); long long sum = 1,sum2 = 0; for(int i = 0; i < H; i++) { for(int j = 0; j < W; j++) { cin >> A[i][j]; if(A[i][j]) { sum *= A[i][j]; sum %= mod; } else { sum2++; } } } vectorsumh(W),sumw(H),sumh2(W),sumw2(H); for(int i = 0; i < H; i++) { long long tmp = 1,tmp2 = 0; for(int j = 0; j < W; j++) { if(A[i][j]) { tmp *= A[i][j]; tmp %= mod; } else { tmp2++; } } sumw[i] = tmp; sumw2[i] = tmp2; } for(int i = 0; i < W; i++) { long long tmp = 1,tmp2 = 0; for(int j = 0; j < H; j++) { if(A[j][i]) { tmp *= A[j][i]; tmp %= mod; } else { tmp2++; } } sumh[i] = tmp; sumh2[i] = tmp2; } int Q; cin >> Q; while (Q--) { int r,c; cin >> r >> c; r--;c--; long long tmp = 1,tmp2 = 0; tmp *= sumw[r]; tmp *= sumh[c]; tmp %= mod; tmp2 += sumw2[r]; tmp2 += sumh2[c]; if(A[r][c]) { tmp *= modpow(A[r][c],mod-2,mod); tmp %= mod; } else { tmp2--; } if(sum2-tmp2) { cout << 0 << endl; } else { cout << sum*modpow(tmp,mod-2,mod)%mod << endl; } } }