#L2713. 「BalkanOI 2018 Day2」Parentrises

「BalkanOI 2018 Day2」Parentrises

题目描述

翻译自 BalkanOI 2018 Day2 T1「Parentrises」

「括号串」是一个仅由 () 构成的字符串。如果在括号串中插入一些 11++ 可以将其转化为正确的表达式,该字符串就是一个「良括号串」。例如,(())()() 是良括号串,而 )(( 不是。空字符串可视为良括号串。

将一个括号串(不要求是良括号串)的每个括号都涂成红 (R)、绿 (G)、蓝 (B) 三种颜色之一,如果有一种方案同时满足:

  1. 忽略该串的所有蓝色括号后它是良括号串;
  2. 忽略该串的所有红色括号后它是良括号串;

则该串就是 RGB 可读的

你会接到两类任务之一。任务类型用一个整数 PP 表示,P=1P=122

  • P=1P=1:你会接到 TT 组询问,每组询问包含一个括号串,试问该串是否 RGB 可读,如果是,请输出一种染色方案,如果否请输出 impossible
  • P=2P=2:你会接到 TT 组询问,每组询问包含一个数 NN,试求:有多少个长度为 NN 的 RGB 可读的良括号串。输出答案模 109+710^9+7 的结果。

输入格式
第一行有一个整数 PP
第二行有一个整数 TT

如果 P=1P=1,在接下来的 TT 行中,每行有一个括号串,表示询问。
如果 P=2P=2,在接下来的 TT 行中,每行有一个数 NN,表示询问。


输出格式
如果 P=1P=1,对于每组询问,

  • 如果该串是 RGB 可读的,请输出一种染色方案;
  • 如果该串不是 RGB 可读的,请输出 impossible

如果 P=2P=2,对于每组询问,请输出长度为 NN 的 RGB 可读的良括号串的个数模 109+710^9+7 的结果。


样例 1

输入

1
3
())(()
()(()
()))

输出

GRBRBG
BBRBG
impossible

对于查询 11,忽略原串的所有蓝色括号后它变为 ()();忽略原串的所有红色括号后它也变为 ()()
对于查询 22,忽略原串的所有蓝色括号后它变为 ();忽略原串的所有红色括号后它变为 ()()


样例 2

输入

2
2
6
100

输出

12
959772055

数据范围与提示

P=1P = 1
LL 为字符串总长。

  • 子任务 #1(55 分):1T51 \le T \le 51len(S)131 \le \text{len}(S) \le 13
  • 子任务 #2(1111 分):1L1001 \le L \le 100
  • 子任务 #3(66 分):1L10001 \le L \le 1000
  • 子任务 #4(2828 分):1L1061 \le L \le 10^6

P=2P = 2

  • 子任务 #5(66 分):1N,T151 \le N, T \le 15
  • 子任务 #6(1616 分):1N,T301 \le N, T \le 30
  • 子任务 #7(2828 分):1N,T3001 \le N, T \le 300