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)