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)