율리우스 카이사르와 카즈사
시간 제한13초메모리 제한256 MB
배열의 구간마다 값에 1을 더하는 갱신과, 두 부분 배열이 같은지 묻는 질의를 처리하는 문제입니다.
문제
카이사르 암호라는 이름을 들어본 적 있는가? 가장 간단하고 잘 알려진 암호화 기법 중 하나이다. 율리우스 카이사르의 이름을 따서 붙었으며, 그는 이 암호로 장군들과 연락을 주고받았다.
카이사르 암호는 평문의 각 글자를 알파벳에서 정해진 칸 수만큼 밀어 내는 치환 암호이다. 알파벳은 끝에서 다시 처음으로 이어진다. 예를 들어 라틴 알파벳에서 1만큼 밀면 A는 B가 되고, B는 C가 되며, Z는 A가 된다.
카즈사에게는 길이 인 정수 배열 이 있으며, 각 는 범위에 있다. 카즈사는 이 배열을 카이사르 암호로 여러 번 암호화한다. 매번 구간 ()을 고르고, 그 안의 모든 수에 1만큼의 이동을 적용한다. 정확히는 모든 에 대해 를 으로 바꾼다.
카즈사가 암호화하는 동안 동생 세쓰나가 배열에 관해 질문한다. 각 질문은 지금까지 암호화를 0번 이상 한 뒤의 배열을 대상으로 한다. 질문은 세 정수 , , 로 주어지며, 문자열 과 이 같은지 묻는다.
카즈사는 암호화하느라 바빠서 이 질문에 답할 겨를이 없다. 그녀를 도와줄 수 있겠는가?
입력
첫 줄에 두 정수 , ()가 주어진다. 배열의 크기와 연산의 개수이다. 둘째 줄에는 초기 배열의 개 정수 ()이 주어진다. 이어지는 개의 줄에는 연산이 하나씩 주어진다. 연산은 다음 두 종류 중 하나이다.
- 1번 연산은 세 정수
1 l r()로 주어지며, 카즈사가 구간 에 1만큼 이동하는 카이사르 암호를 적용했다는 뜻이다. - 2번 연산은 네 정수
2 x y L(, )로 주어지며, 두 문자열이 같은지 묻는다.
출력
2번 연산마다 두 문자열이 같으면 yes, 다르면 no를 한 줄에 출력한다.
힌트
아래 표는 첫 번째 샘플에 대한 설명이다.