AT_pakencamp_2023_day3_b AND

Description

長さ $ n\geq 2 $ の非負整数列 $ a=(a_1,a_2,\ldots,a_n) $ について、 $ f(a) $ を以下の値として定義します。 - 次の操作を行って $ a $ の全ての要素を $ 0 $ に等しくできるならば、そうするために必要な操作回数の最小値。できないならば $ -1 $ 。 - $ 1\leq i\leq n,1\leq j\leq n,|i-j|=1 $ を満たす整数 $ i,j $ を選ぶ。 $ a_i $ を $ a_i\operatorname{AND}a_j $ で置き換える。 長さ $ N $ の非負整数列 $ A=(A_1,A_2,\ldots,A_N) $ が与えられます。 $ Q $ 個のクエリを処理してください。 $ i $ 番目のクエリでは整数 $ L_i,R_i $ が与えられるので、 $ f((A_{L_i},A_{L_i+1},\ldots,A_{R_i})) $ を求めてください。 AND の定義 非負整数 $ x,y $ に対し、ビットごとの論理積 $ x\operatorname{AND}y $ は以下のように定義されます。 - $ x\operatorname{AND}y $ を $ 2 $ 進法で表現したときの $ 2^k $ の位の数は、 $ x $ と $ y $ を $ 2 $ 進法で表現したときの $ 2^k $ の位の数がともに $ 1 $ である場合 $ 1 $ で、そうでない場合 $ 0 $ 。 例えば、 $ 5\operatorname{AND}12=4 $ です。( $ 2 $ 進法表記だと $ 101\operatorname{AND}1100=100 $ となります。)

Input Format

入力は以下の形式で標準入力から与えられます。 > $ N $ $ A_1 $ $ A_2 $ $ \ldots $ $ A_N $ $ Q $ $ L_1 $ $ R_1 $ $ L_2 $ $ R_2 $ $ \vdots $ $ L_Q $ $ R_Q $

Output Format

各クエリで求めた値を改行区切りで出力してください。

Explanation/Hint

### Sample Explanation 1 $ 1 $ 番目のクエリでは、 $ a=(5,6,11) $ として $ f(a) $ の値を出力します。 $ a $ が $ (5,6,11)\rightarrow(5,4,11)\rightarrow(5,0,11)\rightarrow(5,0,0)\rightarrow(0,0,0) $ と変化するように操作を行うと、 $ 4 $ 回の操作で $ a $ の要素を全て $ 0 $ と等しくできます。 $ 4 $ 回より少ない操作手順は存在しないことが証明できるので、 $ f(a)=4 $ となります。 $ 2 $ 番目のクエリでは、 $ a=(6,11) $ として $ f(a) $ の値を出力します。どのように操作を行っても $ a $ の全ての要素を $ 0 $ と等しくすることはできないことが証明できるので、 $ f(a)=-1 $ となります。 ### Constraints - $ 2\leq N\leq 2\times 10^5 $ - $ 0\leq A_i\lt 2^{30} $ - $ 1\leq Q\leq 2\times 10^5 $ - $ 1\leq L_i\lt R_i\leq N $