import sys
sys.setrecursionlimit(2000)
n, m = map(int, input().split())
a = [[0] * m for _ in range(n)]
b = [[0] * m for _ in range(n)]
f = [[0] * m for _ in range(n)]
vis = [[0] * m for _ in range(n)]
for i in range(n):
a[i] = list(map(int, input().split()))
for i in range(n):
b[i] = list(map(int, input().split()))
step = [[0, 1], [0, -1], [-1, 0], [1, 0]]
def dfs(x, y):
if(vis[x][y]):
return f[x][y]
vis[x][y] = 1
f[x][y] = 1
for i in range(4):
nx = x + step[i][0]
ny = y + step[i][1]
if(nx < 0 or ny <0 or nx >= n or ny >= m):
continue
if(a[nx][ny] + b[nx][ny] <= a[x][y]):
f[x][y] += dfs(nx, ny)
f[x][y] = f[x][y] % 100007
return f[x][y]
num = int(input())
for i in range(num):
x, y = map(int, input().split())
x -= 1
y -= 1
output = dfs(x, y)
print(output)