Balaurului Arhirel nu îi plac prea mult şirurile care nu sunt ordonate. Din acest motiv, nu poate să suporte permutările de elemente, aşa că se decide să le sorteze şi pentru asta inventează o metodă proprie de sortare.
El ia iniţial un şir care reprezintă o permutare de ordin . Caută în şirul cel mai mic () şi cel mai mare element (). Să considerăm că se află în şirul pe poziţia , iar pe poziţia . Să notăm cu minimul dintre şi , iar cu maximul dintre şi . Şirul a fost astfel partiţionat în alte trei şiruri, , , care pot avea fiecare zero elemente, un element sau mai multe elemente. Şirul începe la prima poziţie din şir şi se termină la poziţia . Şirul începe la poziţia şi se termină la poziţia . Şirul începe la poziţia şi se termină la ultima poziţie din şir.
Balaurul Arhirel mută valoarea min la capătul din stânga al lui , iar valoarea la capătul din dreapta al şirului şi reia sortarea pentru fiecare din şirurile , , .
De exemplu să considerăm şi şirul = (). La primul pas, şi . Deci = (); = (); = (). Se mută şi la capetele şirului şi se obţine = () şi se sortează în acelaşi mod , şi . şi au , respectiv element, deci sunt deja sortate. Pentru , se găseşte şi şi vom avea şirurile (); (); (). Se mută şi la capete şi se obţine = (). În final, vom avea şirul = (). Evident, această metodă nu va funcţiona întotdeauna pentru sortarea unei permutări.
Spre exemplu, pentru şirul = (), se găseşte şi , iar = (, = (), = (). Se mută şi la capetele lui : = () şi se procedează la sortarea pe rând a şirurilor , , . este sortat, nu are elemente, iar va deveni = (). În final, = ().
Cerinţă
Ajutaţi-l pe Balaurul Arhirel să afle câte dintre permutările de elemente pot fi sortate prin metoda sa.
Date de intrare
Fişierul sortari.in
conţine o singură linie pe care se află numărul .
Date de ieşire
Fişierul sortari.out
va conţine o singură linie pe care se află numărul de permutări de ordin ce pot fi sortate prin metoda balaurului modulo (restul împărţirii numărului de permutări la ).
Restricții și precizări
- ;
Exemplul 1
sortari.in
4
sortari.out
18
Explicație
În cazul permutărilor de câte elemente, şirurile (); (); (); (); (); () nu vor putea fi sortate crescător. Celelalte permutări pot fi sortate crescător.
De exemplu, pentru şirul (), după găsirea , , se obţin şirurile: ; ; , care, având câte un element sunt sortate. Astfel, după mutarea la capete a lui şi vom avea: ()