Azi este ziua secvenței! Profesoara de mate a scris câteva secvențe pe tablă, fiecare având N
numere distincte cuprinse între 1
și N
, și le-a spus studenților că aceste secvențe au o proprietate specială. După o analiză atentă, Deni, una din studente, a ghicit corect proprietatea. Toate secvențele de pe tablă au cel puțin o pereche de numere adiacente de forma (x, x+1)
. Deni a fost așa de fericită încât a denumit acest tip de secvențe drăguțe. De exemplu, pentru N = 4
secvențele 3,1,2,4
și 2,3,4,1
sunt drăguțe, dar secvențele 2,4,1,3
și 4,3,2,1
nu sunt. După aceea, profesoara de mate i-a dat lui Deni o problemă mai dificilă. I s-a cerut să calculeze numărul de secvențe drăguțe formate din N
numere distincte cuprinse între 1
și N
. Această problemă a fost așa de grea încât Deni nu a putut afla răspunsul pe durata orei de clasă. Tu ești prieten cu Deni și vrei să o ajuți.
Cerința
Scrieți programul care pentru un N
dat trebuie să-i spună lui Deni care este numărul de secvențe drăguțe. Acest număr poate fi foarte mare, așa că trebuie calculat modulo M
.
Date de intrare
De pe prima linie a intrării standard se citesc două numere întregi N
și M
– lungimea secvențelor de pe tablă și numărul modulo folosit pentru calcul.
Date de ieșire
Pe o linie din ieșirea standard, programul trebuie să afișeze un singur întreg, numărul de secvențe drăguțe formate din N
numere distincte de la 1
la N
, modulo M
.
Restricții și precizări
1 ≤ N ≤ 10
18
1 ≤ M ≤ 10
7
Subtaskuri
- Subtask 1 (0 puncte) : Exemplele
- Subtask 2 (9 puncte) :
N ≤ 10
- Subtask 3 (14 puncte) :
N ≤ 15
- Subtask 4 (11 puncte) :
N ≤ 20
- Subtask 5 (43 puncte) :
N ≤ 1.000.000
- Subtask 6 (23 puncte) :
1 ≤ N ≤ 10
18
Exemplul 1:
Intrare
4 42
Ieșire
13
Explicație
Secvențele drăguțe formate din 4 numere distincte de la 1
la 4
sunt:
1 2 3 4
1 2 4 3
1 3 4 2
1 4 2 3
2 1 3 4
2 3 1 4
2 3 4 1
3 1 2 4
3 4 1 2
3 4 2 1
4 1 2 3
4 2 3 1
4 3 1 2
Exemplul 2:
Intrare
2000 10009
Ieșire
1295