AT_pakencamp_2025_day3_h OR Preference

Description

**メモリ制限が特殊であることに注意してください。** $ T $ 個のテストケースについて以下の問題を解いてください。 長さ $ N $ の整数列 $ A = (A_0, A_1, \dots, A_{N-1}) $ が与えられます。 あなたは、配列の長さが 1 になるまで、次のいずれかの操作を繰り返し行います。 - $ \mathrm{AND} $ 操作:隣り合う 2 要素 $ (a, b) $ を選び、これらをマージして 1 つの要素に置き換える。このとき、新しい要素は $ a \,\&\, b $ とする。 - $ \mathrm{OR} $ 操作:隣り合う 2 要素 $ (a, b) $ を選び、これらをマージして 1 つの要素に置き換える。このとき、新しい要素は $ a \,|\, b $ とする。 最終的に配列の要素が 1 つになったとき、その値が $ 0 $ でなければなりません。 この条件を満たすような操作列のうち、「 $ \mathrm{OR} $ 操作」を行う回数の最大値を求めてください。 ただし、そのような操作列が存在しない場合は $ -1 $ を出力してください。

Input Format

入力は以下の形式で標準入力から与えられる。入力の $ 1 $ 行目は以下の形式である。 > $ T $ その後、 $ T $ 個のテストケースが続く。各テストケースは以下の形式で与えられる。 > $ N $ $ A_{1} $ $ A_{2} $ $ \cdots $ $ A_{N} $

Output Format

$ T $ 行出力せよ。 $ i $ 行目には、 $ i $ 番目のテストケースにて行うことができる $ \mathrm{OR} $ 操作の回数の最大値を求めよ。

Explanation/Hint

### 部分点 この問題では、次の規則で提出に対する得点が定められる。 - 全ての入力ケースで AC を得た場合、満点が得られる。 - そうでなかった場合、 $ m = 1,2 \ldots 12 $ について次の規則で部分点を得ることができる。 - 「各テストケースにおける $ N $ の総和が $ 2^m $ を超えないかつ、 $ A_i < 2^m $ 」という条件を満たす全ての入力ケースで AC を得た場合、追加で $ m $ 点を得ることができる。 - 例えば、「各テストケースにおける $ N $ の総和が $ 2^4 (=16) $ を超えないかつ、 $ A_i < 2^4 $ 」という条件を満たす全ての入力ケースで AC を得た場合、 $ 1+2+3+4 $ 点、すなわち $ 10 $ 点を得ることができる。 ### Sample Explanation 1 この入力には、 $ 4 $ つのテストケースが含まれます。 $ 1 $ つ目のテストケースについて、次のような手順で $ 2 $ 番目の操作を $ 3 $ 回行うことができます。 - 最初、 $ A = (3,0,1,4,1,5) $ である。 - $ (A_{3}, A_{4}) $ に対して $ \mathrm{OR} $ 操作を行う。操作後、 $ A = (3,0,5,1,5) $ となる。 - $ (A_{1}, A_{2}) $ に対して $ \mathrm{AND} $ 操作を行う。操作後、 $ A = (0,5,1,5) $ となる。 - $ (A_{3}, A_{4}) $ に対して $ \mathrm{OR} $ 操作を行う。操作後、 $ A = (0,5,5) $ となる。 - $ (A_{2}, A_{3}) $ に対して $ \mathrm{OR} $ 操作を行う。操作後、 $ A = (0,5) $ となる。 - $ (A_{1}, A_{2}) $ に対して $ \mathrm{AND} $ 操作を行う。操作後、 $ A = (0) $ となる。 この操作方法は、最終的に $ A_{1} = 0 $ が成立しているため条件を満たします。 $ \mathrm{OR} $ 操作を $ 4 $ 回以上行う方法であって、条件を満たすように操作を行うことはできないため答えは $ 3 $ となります。 ### Constraints - $ 1 \leq T \leq 2^{12} $ - $ 2 \leq N \leq 2^{13} $ - $ 0 \leq A_{i} < 2^{13} $ - 各テストケースにおける $ N $ の総和は $ 2^{13} $ を超えない - 入力は全て整数