만드는 중입니다

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

밤블비의 고장

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

요약
배열의 각 구간에 대해 공집합이 아닌 모든 부분집합의 mex 값들에 대한 gcd를 구합니다.
난이도

쉬움10점 중 3점

유형
누적 합, 구현
정답자
아직 제출이 없습니다

문제

밤블비는 디셉티콘과 싸운 뒤 고장이 났다. 지금 그는 이상한 문제를 풀려고 한다. 문제 조건은 다음과 같다.

양의 자연수 집합에 대해 두 함수를 정의한다. 첫 번째 함수는 mex(a1,a2,…,an)mex(a_1, a_2, \dots, a_n)으로, a1,a2,…,ana_1, a_2, \dots, a_n 중에 없는 가장 작은 양의 자연수이다. 두 번째 함수는 gcd(a1,a2,…,an)gcd(a_1, a_2, \dots, a_n)으로, a1,a2,…,ana_1, a_2, \dots, a_n의 최대공약수이다. 밤블비는 자연수 배열을 만들었고, 다음 연산을 하고 싶어 한다. 주어진 ll, rr에 대해 배열의 ala_l부터 ara_r까지 구간의 모든 부분집합을 나열하고, 공집합이 아닌 각 부분집합의 mexmex를 구한 뒤, 얻은 모든 mexmex의 gcdgcd를 계산한다. (이때 mexmex는 2r−l+1−12^{r - l + 1} - 1개가 나온다는 것을 쉽게 알 수 있다.)

밤블비의 계산 능력으로는 이 문제를 빠르게 풀 수 없다. 그를 도와라.

입력

첫 줄에 배열의 길이 nn (1≤n≤1051 \le n \le 10^5)이 주어진다.

둘째 줄에는 공백으로 구분된 nn개의 정수 aia_i (1≤ai≤1091 \le a_i \le 10^9)가 주어진다.

셋째 줄에는 질의의 개수 qq (1≤q≤1041 \le q \le 10^4)가 주어진다.

이후 qq개의 줄에 각각 두 정수 ll, rr (1≤l≤r≤n1 \le l \le r \le n)이 주어진다. 이는 함수의 값을 구해야 하는 구간이다.

출력

qq개의 줄을 출력한다. ii번째 줄에는 ii번째 질의의 답을 출력한다.

예제1

  1. 예제 1

    입력
    4
    1 2 3 4
    2
    1 1
    1 4
    
    예상 출력
    2
    1