parent

Pentru a construi expresii matematice, folosim in practica trei tipuri de paranteze: "(" si ")", "[" si "]", "{" si "}". Un sir de caractere (format doar din cele 6 paranteze de mai sus) este corect parantezat daca si numai daca parantezele sunt imbricate corect si, in plus:
- intre oricare doua paranteze rotunde aflate in corespondenta nu apar paranteze patrate sau acolade;
- intre oricare doua paranteze patrate aflate in corespondenta nu apar acolade.

Pentru rezolvitorii cu inclinatii matematice (ceilalti pot sari cu incredere peste aceasta descriere matematica plictisitoare), putem reformula conditia de parantezare corecta astfel: Fie s un sir de caractere format doar din cele 6 paranteze de mai sus. Notam cu a[i][c] numarul de caractere c aflate in prefixul de lungime i al lui s. s este o parantezare corecta daca si numai daca pentru orice 1<=i<=N:
- a[i]['('] - a[i][')'] >= 0 si a[i]['['] - a[i][']'] >= 0 si a[i]['{'] - a[i]['}'] >= 0
- (a[i]['('] - a[i][')'] > 0) ==> ((a[i]['['] - a[i][']'] = 0) si (a[i]['{'] - a[i]['}'] = 0))
- (a[i]['['] - a[i][']'] > 0) ==> (a[i]['{'] - a[i]['}'] = 0)

Un exemplu de sir corect parantezat este "[[]()]{}". Sirul "())(" nu este parantezat corect deoarece parantezele nu sunt imbricate corect. Sirul "([])" nu este parantezat corect deoarece [] apare in interiorul unor paranteze rotunde.

Cerinta
Sa se determine cate siruri de parantezari corecte de lungime N exista.

Date de intrare
Pe prima linie a fisierului parent.in se gaseste numarul natural N.

Date de iesire
Pe singura linie a fisierului parent.out afisati numarul calculat, modulo 9311.

Restrictii si precizari
2 <= N <= 5000, N par

Exemplu

parent.in

parent.out

parent.in

parent.out

2

3

4

15

 

Timp maxim de executie/test: 0.7 secunde

stud. Stefan Ciobaca
ENs Cachan, DPT Infomatique
stefan.ciobaca@gmail.com