만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

율리우스 카이사르와 카즈사

시간 제한13초메모리 제한256 MB

요약
배열의 구간마다 값에 1을 더하는 갱신과, 두 부분 배열이 같은지 묻는 질의를 처리하는 문제입니다.
난이도

보통10점 중 7점

유형
세그먼트 트리, 문자열 매칭, 수학
정답자
아직 제출이 없습니다

문제

카이사르 암호라는 이름을 들어본 적 있는가? 가장 간단하고 잘 알려진 암호화 기법 중 하나이다. 율리우스 카이사르의 이름을 따서 붙었으며, 그는 이 암호로 장군들과 연락을 주고받았다.

카이사르 암호는 평문의 각 글자를 알파벳에서 정해진 칸 수만큼 밀어 내는 치환 암호이다. 알파벳은 끝에서 다시 처음으로 이어진다. 예를 들어 라틴 알파벳에서 1만큼 밀면 A는 B가 되고, B는 C가 되며, Z는 A가 된다.

카즈사에게는 길이 nn인 정수 배열 a1,a2,…,ana_1, a_2, \dots, a_n이 있으며, 각 aia_i는 [0,65536)[0, 65536) 범위에 있다. 카즈사는 이 배열을 카이사르 암호로 여러 번 암호화한다. 매번 구간 [l,r][l, r] (1≤l≤r≤n1 \le l \le r \le n)을 고르고, 그 안의 모든 수에 1만큼의 이동을 적용한다. 정확히는 모든 l≤i≤rl \le i \le r에 대해 aia_i를 (ai+1) mod 65536(a_i + 1) \bmod 65536으로 바꾼다.

카즈사가 암호화하는 동안 동생 세쓰나가 배열에 관해 질문한다. 각 질문은 지금까지 암호화를 0번 이상 한 뒤의 배열을 대상으로 한다. 질문은 세 정수 xx, yy, LL로 주어지며, 문자열 ax,ax+1,…,ax+L−1a_x, a_{x+1}, \dots, a_{x+L-1}과 ay,ay+1,…,ay+L−1a_y, a_{y+1}, \dots, a_{y+L-1}이 같은지 묻는다.

카즈사는 암호화하느라 바빠서 이 질문에 답할 겨를이 없다. 그녀를 도와줄 수 있겠는가?

입력

첫 줄에 두 정수 nn, qq (1≤n,q≤5000001 \le n, q \le 500000)가 주어진다. 배열의 크기와 연산의 개수이다. 둘째 줄에는 초기 배열의 nn개 정수 a1,a2,…,ana_1, a_2, \dots, a_n (0≤ai<655360 \le a_i < 65536)이 주어진다. 이어지는 qq개의 줄에는 연산이 하나씩 주어진다. 연산은 다음 두 종류 중 하나이다.

  • 1번 연산은 세 정수 1 l r (1≤l≤r≤n1 \le l \le r \le n)로 주어지며, 카즈사가 구간 [l,r][l, r]에 1만큼 이동하는 카이사르 암호를 적용했다는 뜻이다.
  • 2번 연산은 네 정수 2 x y L (1≤x,y≤n1 \le x, y \le n, max⁡(x,y)+L−1≤n\max(x, y) + L - 1 \le n)로 주어지며, 두 문자열이 같은지 묻는다.

출력

2번 연산마다 두 문자열이 같으면 yes, 다르면 no를 한 줄에 출력한다.

힌트

아래 표는 첫 번째 샘플에 대한 설명이다.

연산배열설명
1[1,2,1,2,1][1,2]와 [2,1]은 다르다
2[1,2,1,2,1][1,2,1]과 [1,2,1]은 같다
3[2,2,1,2,1]첫 번째 원소가 1만큼 밀렸다
4[2,2,2,3,2]세 번째부터 다섯 번째 원소가 1만큼 밀렸다
5[2,2,2,3,2][2,2,2,3]과 [2,2,3,2]는 다르다
6[2,2,2,3,2][2,2]와 [2,2]는 같다

예제2

  1. 예제 1

    입력
    5 6
    1 2 1 2 1
    2 1 2 2
    2 1 3 3
    1 1 1
    1 3 5
    2 1 2 4
    2 1 2 2
    
    예상 출력
    no
    yes
    no
    yes
    
  2. 예제 2

    입력
    3 3
    0 65535 65535
    2 1 2 2
    1 2 3
    2 1 2 2
    
    예상 출력
    no
    yes