#P17460. [GESP202609 七级] 括号序列

[GESP202609 七级] 括号序列

题目描述

对于字符串 SSTT,如果从 SS 中删除任意多个字符可以得到 TT,那么 TTSS 的子序列。换言之,TT 是选取 SS 中的若干字符按下标顺序连接而成的。两个子序列不同当且仅当所选取的下标不同。

例如 sunsequence 的子序列,因为从 sequence 中删除 eqece 可以得到 sunsequence282^8 个不同的子序列,其中有空字符串,也有三个不同的子序列 e,因为 sequence 的第 2,5,82,5,8 个字符都为 e,分别保留这三个字符得到的子序列是不同的。

对于字符串 SS,如果 SS 满足以下条件那么 SS 是合法括号序列:

  • SS 是空字符串,或者
  • SS 可由 (、合法括号序列、) 三者连接得到,或者
  • SS 可由两个合法括号序列连接得到。

例如 ()()()(())(()()) 都是合法括号序列。但是 (())( 不是合法括号序列。

给定一个长度为 nn 的仅包含 () 的字符串 SS。请你求出 SS 所有 2n2^n 个子序列中有多少个合法括号序列。由于答案可能很大,请你输出答案对 10910^9 取模的结果。

例如,SS))(()( 时共有 33 个子序列是合法括号序列,分别为空字符串与两个不同的子序列 ()

输入格式

第一行,一个正整数 nn,表示字符串 SS 的长度。

第二行,长度为 nn 的仅包含 () 的字符串 SS

输出格式

输出一行,一个整数,表示 SS 的合法括号子序列的数量对 10910^9 取模的结果。

输入输出样例 #1

输入 #1

6
))(()(

输出 #1

3

输入输出样例 #2

输入 #2

34
((((((((((((((((()))))))))))))))))

输出 #2

333606220

说明/提示

对于 40%40\% 的测试点,保证 1n4001\le n\le 400

对于所有测试点,保证 1n20001\le n\le 2000