만드는 중입니다

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

Great Party

시간 제한1초메모리 제한1024 MB

요약
각 질의 구간 [l, r]에서 돌 더미를 따로 떼어 게임으로 할 때 선공이 이기는 부분 구간의 개수를 구합니다.
난이도

어려움10점 중 9점

유형
게임 이론, 비트 연산, 투 포인터
정답자
아직 제출이 없습니다

문제

그램미(Grammy)가 멋진 파티에 참석했다.

파티에서 흥미로운 게임이 진행된다. 테이블 위에 돌 더미 nn개가 있고, ii번째 더미에는 돌이 aia_i개 있다. 두 명의 플레이어가 번갈아 가며 돌을 조작한다.

플레이어는 자기 차례에 다음 두 단계를 수행한다.

  1. 비어 있지 않은 더미 하나를 골라, 그 더미에서 양의 개수만큼 돌을 제거한다.
  2. 남은 돌을 그 더미에 그대로 두거나, 남은 돌을 모두 비어 있지 않은 다른 더미에 합친다.

조작할 수 없는 플레이어가 게임에서 진다.

그램미는 질문 qq개를 준비했다. 각 질문마다 구간 [l,r][l, r]의 부분 구간 중에서, 그 부분 구간에 있는 더미만 떼어 내어 게임을 한다고 할 때 첫 번째 플레이어가 이기는 부분 구간의 개수를 구하시오.

입력

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

둘째 줄에 정수 a1,a2,…,ana_1, a_2, \ldots, a_n이 주어진다 (1≤ai≤1061 \leq a_i \leq 10^6).

다음 qq개의 줄에는 각각 두 정수 lil_i와 rir_i가 주어진다 (1≤li≤ri≤n1 \leq l_i \leq r_i \leq n).

출력

qq개의 줄을 출력한다. 각 줄에는 질문에 대한 답을 나타내는 정수 하나를 출력한다.

예제2

  1. 예제 1

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

    입력
    4 5
    5 6 7 8
    1 2
    2 3
    3 4
    1 3
    2 4
    
    예상 출력
    3
    3
    3
    6
    6