TUNA2026 東京Stage Welcome コンテスト (オープン) 2026/09/23 14:00 ~ 2026/09/23 18:00 4:00:00

O Three Decomposition

問題
制限時間: 2 sec メモリ制限: 1024 MB
Three Decomposition
Statement

長さ \(N\) の 01 文字列 \(S=S_1S_2\ldots S_N\) が与えられます.

整数 \(1\leq l\leq r\leq N\) に対して,\(S[l,r]\) を文字列 \(S_lS_{l+1}\ldots S_r\) を二進数として解釈した整数とします.先頭に 0 が含まれる場合も,通常の二進数と同様に解釈します.

区間の集合 \(\mathcal{I}\) が次の条件を全て満たすとき,\(\mathcal{I}\) を \(S\) の 三分解(みぶんかい) と呼びます.

  • \(\mathcal{I}\) に含まれる区間の和集合が \([1,N]\) である.
  • \(\mathcal{I}\) に含まれる任意の区間 \([l,r]\) について,\(S[l,r]\) が 3 の倍数である.

各整数 \(1\leq i\leq N\) について,\(c_i\) を \(\mathcal{I}\) に含まれる区間のうち,位置 \(i\) を含むものの個数とします.このとき,三分解 \(\mathcal{I}\) の 幅 を

\(\displaystyle \max_{1\leq i\leq N} c_i\)

と定めます.

さらに,\(S\) の三分解の幅としてあり得る最小値を,\(S\) の 三幅 と呼びます.ただし,\(S\) の三分解が存在しない場合,三幅を \(-1\) と定めます.

\(S\) の三幅を求めてください.

Input

入力は以下の形式で標準入力から与えられます.

\(T\)
\(\mathrm{case}_1\)
\(\mathrm{case}_2\)
\(\vdots\)
\(\mathrm{case}_T\)

各テストケース \(\mathrm{case}_i\) は以下の形式です.

\(N\)
\(S\)

制約は以下の通りです.

  • \(1\leq T\leq 2\times 10^5\)
  • \(1\leq N\leq 2\times 10^5\)
  • \(S\) は 0 と 1 のみからなる長さ \(N\) の文字列
  • \(1\) つの入力に含まれる \(N\) の総和は \(2\times 10^5\) 以下
  • 入力中の \(T,N\) はすべて整数

Output

1 つの入力につき \(T\) 個のテストケースが与えられるので,それぞれについて答えてください.各テストケースについて,\(S\) の三幅を 1 行に出力してください.

Example

Input 1
3
2
11
3
111
2
10
Output 1
1
2
-1

Note

1 番目のテストケースでは,区間 \([1,2]\) のみからなる集合は三分解です.\(S[1,2]=3\) は 3 の倍数であり,この三分解の幅は 1 です.

2 番目のテストケースでは,区間 \([1,2]\) と区間 \([2,3]\) からなる集合は三分解です.位置 2 は両方の区間に含まれるため,この三分解の幅は 2 です.幅が 1 の三分解は存在しません.

3 番目のテストケースでは,位置 1 を含み,かつ対応する二進数が 3 の倍数となる区間が存在しません.したがって,三分解は存在しません.