만드는 중입니다

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

카드 게임

시간 제한3초메모리 제한2048 MB

난이도

아직 분류되지 않았습니다

정답자
아직 제출이 없습니다

문제

Randias는 카드 게임을 하고 있다. 각 카드에는 숫자가 적혀 있다. 숫자가 a1,a2,…,ama_{1}, a_{2}, \ldots, a_{m}인 카드들에 대해 Randias는 다음과 같이 게임을 진행한다.

처음에 모든 카드는 Randias의 손에 있다. Randias는 카드 순서열을 관리하며, 처음에는 비어 있다. ii번째 연산에서 Randias는 ii번째 카드(숫자 aia_{i})를 순서열의 끝에 놓는다. 그다음 다음과 같이 처리한다.

  • 순서열에 숫자 aia_{i}가 적힌 다른 카드가 없으면 ii번째 연산이 끝난다.
  • 그렇지 않으면, 순서열에서 숫자 aia_{i}가 적힌 jj번째 카드를 찾는다. Randias는 jj번째 카드부터 방금 놓은 카드까지, 그 사이의 모든 카드를 두 끝을 포함해 가져간다.

예시로 a=[2,1,3,1,2,3]a = [2, 1, 3, 1, 2, 3]이고 카드 순서열 s=[]s = []에서 시작한다고 하자. 1번 연산 후 s=[2]s = [2]이다. 2번 연산 후 s=[2,1]s = [2, 1]이다. 3번 연산 후 s=[2,1,3]s = [2, 1, 3]이다. 4번 연산 후 s=[2]s = [2]이다(카드 1, 3, 1이 제거된다). 5번 연산 후 s=[]s = []이다(카드 2, 2가 제거된다). 6번 연산 후 s=[3]s = [3]이다.

Randias에게 nn장의 카드 a1,a2,…,ana_{1}, a_{2}, \ldots, a_{n}와 qq개의 질의가 주어진다. ii번째 질의는 쌍 ℓi,ri\ell_i, r_i이다. 각 질의마다 초기 카드 목록이 aℓi,aℓi+1,…,aria_{\ell_i}, a_{\ell_i+1}, \ldots, a_{r_i}일 때 연산이 끝나고 순서열에 남는 카드 수를 구한다. 질의는 온라인으로 답해야 하므로, 각 질의는 이전 질의의 답을 이용해 복호화한다.

입력

첫 줄에 두 정수 nn과 qq가 주어진다 (1≤n,q≤3⋅1051 \le n, q \le 3 \cdot 10^5).

다음 줄에 nn개의 정수 a1,a2,…,ana_{1}, a_{2}, \ldots, a_{n}이 주어진다 (1≤ai≤n1 \le a_{i} \le n).

이어지는 qq개의 줄에는 각각 두 정수 ℓi′\ell'_i와 ri′r'_i가 주어진다 (0≤ℓi′,ri′≤2n0 \le \ell'_i, r'_i \le 2n). 직전 질의의 답을 lastanslastans라 하자. 그러면 복호화된 질의는 ℓi=ℓi′⊕lastans\ell_i = \ell'_i \oplus lastans, ri=ri′⊕lastansr_i = r'_i \oplus lastans이다. 여기서 ⊕\oplus는 비트 단위 배타적 논리합이다. 복호화한 뒤에는 항상 1≤ℓi≤ri≤n1 \le \ell_i \le r_i \le n이다. 아직 답한 질의가 없으면 lastans=0lastans = 0이다.

출력

각 질의에 대해 답을 한 줄에 하나의 정수로 출력한다.

힌트

첫 번째 예시에서 질의의 구간은 [5,5][5, 5], [2,5][2, 5], [1,1][1, 1], [1,4][1, 4], [3,5][3, 5]이다.

예제2

  1. 예제 1

    입력
    5 5
    3 3 1 1 1
    5 5
    3 4
    3 3
    0 5
    3 5
    
    예상 출력
    1
    2
    1
    0
    1
    
  2. 예제 2

    입력
    7 7
    2 4 1 2 3 1 2
    1 6
    0 4
    3 3
    0 4
    0 3
    0 6
    2 7
    
    예상 출력
    2
    1
    1
    1
    2
    3
    0