MOD = 10**9+7 H, W = map(int, input().split()) A = [list(map(int, input().split())) for _ in range(H)] soseki = 1 sosekiH = [1] * H sosekiW = [1] * W zeroH = [0] * H zeroW = [0] * W zero_cnt = 0 for i in range(H): for j in range(W): a = A[i][j] if a != 0: soseki *= a soseki %= MOD sosekiH[i] *= a sosekiW[j] *= a sosekiH[i] %= MOD sosekiW[j] %= MOD else: zeroH[i] += 1 zeroW[j] += 1 zero_cnt += 1 Q = int(input()) for i in range(Q): r, c = map(int, input().split()) r -= 1 c -= 1 # zero チェック cnt = zeroH[r] + zeroW[c] - (1 if A[r][c] == 0 else 0) print(cnt, zero_cnt, soseki) if cnt == zero_cnt: # 0 は全部塗りつぶされた ans = soseki ans *= pow(sosekiH[r], -1, MOD) ans %= MOD ans *= pow(sosekiW[c], -1, MOD) ans %= MOD if A[r][c] != 0: ans *= A[r][c] ans %= MOD else: ans = 0 print(ans)