F - Finite Bracket Sequence Editorial /

Time Limit: 2 sec / Memory Limit: 1024 MiB

配点 : 100

問題文

本問の設定は G 問題と共通です。

( および ) のみからなる長さ N の文字列 S が与えられます。

Q 個のクエリに答えてください。i 番目のクエリでは整数 L_i, R_i が与えられるので、以下の問題を解いてください。

SL_i 文字目から R_i 文字目までからなる部分文字列 X を考えます。

正整数 k を選び、さらに Xk 回連結した文字列の部分文字列 Y を選ぶことを考えます。ここで、Y は正しい括弧列である必要があります。Y は空文字列であってもかまいません。

Y の長さとしてありうる最大値が存在するかどうか判定してください。

正しい括弧列とは 正しい括弧列とは、() である部分文字列を削除することを 0 回以上繰り返して空文字列にできる文字列を指します。

制約

  • N, Q, L_i, R_i は整数
  • 1 \leq N \leq 2 \times 10^5
  • 1 \leq Q \leq 2 \times 10^5
  • S( および ) のみからなる長さ N の文字列
  • 1 \leq L_i \leq R_i \leq N

入力

入力は以下の形式で標準入力から与えられる。

N Q
S
L_1 R_1
L_2 R_2
\vdots
L_Q R_Q

出力

Q 行にわたって出力せよ。i 行目には、i 番目のクエリについて、Y の長さとしてありうる最大値が存在するならば Finite を、存在しないならば Infinite を出力せよ。


入力例 1

4 3
()((
2 3
1 4
3 4

出力例 1

Infinite
Finite
Finite

1 番目のクエリでは、X = )( です。任意の正整数 k に対し、Xk 回連結した文字列から最初の文字と最後の文字を削除して得られる長さ 2k-2 の文字列は正しい括弧列であるため、Y の長さとしてありうる最大値は存在しません。したがって、Infinite を出力します。

2 番目のクエリでは、X = ()(( です。Y の長さとしてありうる最大値は 2 であることが証明できます。したがって、Finite を出力します。

3 番目のクエリでは、X = (( です。Y の長さとしてありうる最大値は 0 であるため、Finite を出力します。Y は空文字列でもよいことに注意してください。