낙서하며 책 읽기

책 텍스트와 칠해진 칸 그림이 주어질 때, 펜 이동으로 그 그림을 평행이동까지 정확히 그리는 가장 앞선 연속 구간을 찾는다.

보통7문자열 매칭해시맵시뮬레이션아직 제출이 없습니다시간 제한2초메모리 제한256 MB

문제

유진이는 지루한 책을 읽고 있다. 읽는 동안 심심하지 않도록 그림도 같이 그린다. 유진이에게는 정사각형 칸으로 나뉜 모눈종이가 있고, 처음에는 모든 칸이 비어 있다.

유진이는 먼저 칸 하나를 색칠한다. 그다음 책의 아무 페이지나 펼쳐서 읽기 시작한다. 글자 u를 볼 때마다 펜을 한 칸 위로 옮기고 펜이 놓인 칸을 색칠한다. 글자 d를 보면 똑같이 하되 펜을 한 칸 아래로 옮긴다. 글자 lr을 보면 각각 왼쪽과 오른쪽으로 한 칸 옮긴다. 나머지 글자와 공백, 쉼표, 마침표에서는 아무것도 하지 않는다. 이미 색칠한 칸을 다시 색칠할 수도 있다.

그림이 그려진 종이와 책의 본문을 찾았다. 유진이가 책을 읽던 어느 시점에 이 그림을 그릴 수 있었는지 판별하려고 한다. 유진이가 읽은 부분은 본문의 연속한 일부일 수도 있다. 유진이가 맨 처음 색칠한 칸이 어디였는지는 알 수 없으므로, 색칠된 칸의 집합이 주어진 그림과 평행이동으로 정확히 일치하면 그릴 수 있었다고 본다.

입력

첫째 줄에 본문의 길이 ll이 주어진다 (1l1000001 \le l \le 100\,000).

둘째 줄에 길이가 ll인 본문이 주어진다. 본문은 영어 소문자와 공백, 쉼표, 마침표로만 이루어져 있고, 공백으로 시작하거나 끝나지 않는다.

셋째 줄에 그림의 크기를 나타내는 두 양의 정수 nnmm이 주어진다 (2n×m1000002 \le n \times m \le 100\,000).

이어지는 nn개의 줄에는 길이가 mm인 문자열이 주어진다. 색칠된 칸은 X, 빈 칸은 .이다. 색칠된 칸은 두 개 이상임이 보장된다.

nn개의 줄 중 첫 줄이 그림의 맨 위, 마지막 줄이 맨 아래에 해당한다.

출력

유진이가 그림을 그릴 수 있었다면 첫째 줄에 YES를 출력한다. 둘째 줄에는 두 정수 bbee를 출력한다 (1bel1 \le b \le e \le l). 본문의 bb번째 글자부터 ee번째 글자까지 차례로 읽었을 때 색칠되는 칸이 주어진 그림과 평행이동으로 정확히 일치해야 한다. 조건을 만족하는 (b,e)(b, e)가 여러 개면 bb가 가장 작은 것을 출력하고, 그런 것이 여러 개면 그중 ee가 가장 작은 것을 출력한다.

그릴 수 없었다면 NO를 출력한다.