반복되는 미로
시간 제한4초메모리 제한512 MB
무한히 반복되는 격자에서 빈 칸만 지나 출발 셀에서 원점까지 도달할 수 있는지 쿼리마다 판정합니다.
문제
평면 전체를 덮는 미로가 있다. 미로는 행 열짜리 직사각형 격자인 패턴 하나를 상하좌우로 계속 이어 붙여 만든다. 패턴의 각 칸은 빈 칸이거나 막힌 칸이다.
무한 격자의 행과 열에는 음수를 포함한 정수 번호를 붙인다. 아래로 갈수록 행 번호가 커지고 오른쪽으로 갈수록 열 번호가 커진다. 좌표가 인 칸을 원점이라 한다. 패턴은 뒤집거나 회전하지 않은 채로, 왼쪽 위 칸의 행 번호가 의 배수이고 열 번호가 의 배수인 모든 직사각형 영역에 그대로 복사된다. 그래서 패턴의 왼쪽 위 칸은 원점에 놓이고 오른쪽 아래 칸은 좌표가 인 칸에 놓인다.
어떤 칸에서 미로를 탈출한다는 것은 빈 칸만 밟으면서 한 번에 상하좌우로 한 칸씩 움직여 원점에 도달한다는 뜻이다.
패턴과 출발 칸 목록이 주어진다. 각 출발 칸마다 탈출이 가능한지 판정하라.
입력
첫째 줄에 패턴의 행 수와 열 수를 나타내는 두 정수 과 이 주어진다 (). 다음 개 줄에는 패턴의 한 행을 나타내는 길이 의 문자열이 주어진다. 문자 #는 막힌 칸을, .는 빈 칸을 뜻한다.
다음 줄에 출발 칸의 개수 가 주어진다 (). 이어지는 개 줄 중 번째 줄에는 번째 출발 칸의 행 번호와 열 번호를 나타내는 두 정수 과 가 주어진다 ().
원점과 모든 출발 칸은 빈 칸이다.
출력
개의 줄을 출력한다. 번째 줄에는 번째 출발 칸에서 미로를 탈출할 수 있으면 yes를, 그렇지 않으면 no를 출력한다.
힌트
그림은 첫 번째 예제의 미로다. 색칠한 직사각형은 원점에서 시작하는 패턴 복사본이고, x로 표시한 칸이 원점이다.
