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 zero = [[0] * (W) for _ in range(H)] 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: zero[i][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 = 0 for j in range(W): if zero[r][j]: cnt += 1 for i in range(H): if zero[i][c]: cnt += 1 if zero[r][c]: cnt -= 1 if cnt == zero_cnt: # 0 は全部塗りつぶされた ans = soseki ans *= pow(sosekiH[r], -1, MOD) ans %= MOD ans *= pow(sosekiW[c], -1, MOD) ans %= MOD ans *= A[r][c] ans %= MOD else: ans = 0 print(ans)