반복되는 미로

무한히 반복되는 격자에서 빈 칸만 지나 출발 셀에서 원점까지 도달할 수 있는지 쿼리마다 판정합니다.

어려움8유니온 파인드그래프BFS아직 제출이 없습니다시간 제한4초메모리 제한512 MB

문제

평면 전체를 덮는 미로가 있다. 미로는 nnmm열짜리 직사각형 격자인 패턴 하나를 상하좌우로 계속 이어 붙여 만든다. 패턴의 각 칸은 빈 칸이거나 막힌 칸이다.

무한 격자의 행과 열에는 음수를 포함한 정수 번호를 붙인다. 아래로 갈수록 행 번호가 커지고 오른쪽으로 갈수록 열 번호가 커진다. 좌표가 (0,0)(0, 0)인 칸을 원점이라 한다. 패턴은 뒤집거나 회전하지 않은 채로, 왼쪽 위 칸의 행 번호가 nn의 배수이고 열 번호가 mm의 배수인 모든 n×mn \times m 직사각형 영역에 그대로 복사된다. 그래서 패턴의 왼쪽 위 칸은 원점에 놓이고 오른쪽 아래 칸은 좌표가 (n1,m1)(n - 1, m - 1)인 칸에 놓인다.

어떤 칸에서 미로를 탈출한다는 것은 빈 칸만 밟으면서 한 번에 상하좌우로 한 칸씩 움직여 원점에 도달한다는 뜻이다.

패턴과 출발 칸 목록이 주어진다. 각 출발 칸마다 탈출이 가능한지 판정하라.

입력

첫째 줄에 패턴의 행 수와 열 수를 나타내는 두 정수 nnmm이 주어진다 (1n,m1001 \le n, m \le 100). 다음 nn개 줄에는 패턴의 한 행을 나타내는 길이 mm의 문자열이 주어진다. 문자 #는 막힌 칸을, .는 빈 칸을 뜻한다.

다음 줄에 출발 칸의 개수 qq가 주어진다 (1q2000001 \le q \le 200000). 이어지는 qq개 줄 중 kk번째 줄에는 kk번째 출발 칸의 행 번호와 열 번호를 나타내는 두 정수 rrcc가 주어진다 (109r,c109-10^9 \le r, c \le 10^9).

원점과 모든 출발 칸은 빈 칸이다.

출력

qq개의 줄을 출력한다. kk번째 줄에는 kk번째 출발 칸에서 미로를 탈출할 수 있으면 yes를, 그렇지 않으면 no를 출력한다.

힌트

그림은 첫 번째 예제의 미로다. 색칠한 직사각형은 원점에서 시작하는 패턴 복사본이고, x로 표시한 칸이 원점이다.