SOJ ONLINE JUDGE

구간 안의 작은 수

난이도: Platinum III 출제자: rlatjwls7882 시간 제한: 1000 ms 메모리 제한: 512 MB
이분 탐색머지 소트 트리세그먼트 트리

길이가 $N$인 수열 $A$가 있다. $Q$개의 쿼리를 순서대로 처리하라.

처음에 $ans=0$이다. 각 쿼리마다 세 정수 $a$, $b$, $c$가 주어지며 다음과 같이 $l$, $r$, $x$를 정한다.

  • $l=((a \oplus ans) \bmod N)+1$
  • $r=((b \oplus ans) \bmod N)+1$
  • $x=c \oplus ans$

만약 $l>r$이면 두 값을 바꾼다. 각 쿼리마다 구간 $A_l,A_{l+1},\ldots,A_r$에서 $x$ 이하인 원소의 개수를 출력하고 출력한 값이 다음 쿼리의 $ans$가 된다.

입력

첫 번째 줄에 수열의 길이 $N$과 쿼리의 개수 $Q$가 주어진다. $(1 \leq N,Q \leq 200\,000)$

두 번째 줄에 수열의 원소 $A_1,A_2,\ldots,A_N$이 주어진다. $(0 \leq A_i < 2^{30})$

세 번째 줄부터 $Q$개의 줄에 걸쳐 세 정수 $a$, $b$, $c$가 주어진다. $(0 \leq a,b,c < 2^{30})$

출력

각 쿼리마다 구간에서 $x$ 이하인 원소의 개수를 한 줄에 하나씩 출력한다.

예제 입력 1

5 5
5 1 4 2 3
0 4 3
2 0 1
2 0 6
1 7 2
3 3 2

예제 출력 1

3
2
2
0
1

제출