TopCoder

User's AC Ratio

NaN% (0/0)

Submission's AC Ratio

NaN% (0/0)

Tags

Description

讓我們來定義一個正確的括弧字串

(i) 圓角括弧()與方括弧[]分別都是一個正確的括弧字串

(ii) 若 S 是個正確的括弧字串,則 (S)[S] 也是正確的括弧字串。

(iii) 若 AB 都是正確的括弧字串,則將他們接起來 AB 也是正確的括弧字串。


對於一個包含至少一對方括弧[]正確的括弧字串,我們可以將這個字串所有方括弧的[以及]分別換成相同的圓左括弧(,這麼一來經過取代的字串就變成了壞掉的括弧字串。例如 (( 是由 []取代而來;((((())) 可能是由 ,(),(()),((([])))這四種字串取代而來。


現在給你一個壞掉的括弧字串,請問它是由多少種正確的括弧字串經過以上字串取代方式而產生呢?由於答案巨大,請輸出答案除以 1000000009 的餘數。

Input Format

輸入僅包含一筆測試資料,它的第一行有一個正偶數 N 表示字串的長度。第二行則有一個長度恰好為 N 的壞掉的括弧串。


佔總分 20 分以上的測試資料滿足: N<=50

佔總分 45 分以上的測試資料滿足: N<=1000

佔總分 100 分的測試資料滿足: N<=30000


請注意,範例測資有兩筆,但實際上一個輸入檔案只有一筆測試資料。

Output Format

對於每一筆測試資料,請輸出答案。

Sample Input 1

4
((()
8
((((((((

Sample Output 1

2
14

Hints

Problem Source

Migrated from old NTUJ.

BOI2012 Day1

Subtasks

No. Testdata Range Score

Testdata and Limits

No. Time Limit (ms) Memory Limit (VSS, KiB) Output Limit (KiB) Subtasks
0 1000 65536 200