Cerință
Avem la dispoziţie segmente, toate de aceeaşi lungime. Din aceste segmente se pot construi poligoane închise de lungime , , , etc. pe care le vom numi ochiuri.
Aceste ochiuri vor fi legate între ele cu ajutorul a sau mai multe segmente. Un astfel de lanţ obţinut întotdeauna începe şi se termină cu un ochi. Exemplele de mai jos reprezintă câte un lanţ format cu ochiuri din segmente.
Două lanţuri se consideră echivalente dacă conţin acelaşi număr de segmente, acelaşi număr de ochiuri şi ochiurile corespondente au aceeaşi dimensiune şi sunt legate de acelaşi număr de segmente. Dacă două lanţuri nu sunt echivalente, le vom numi diferite.
Lanţurile din exemplele şi sunt echivalente, iar lanţurile din exemplele şi diferă de celelalte trei lanţuri.
Să se determine numărul de lanţuri diferite formate din segmente şi având ochiuri.
Date de intrare
Fişierul lant.in
conţine pe o singură linie cele două numere naturale şi separate printr-un spaţiu.
Date de ieșire
Fişierul lant.out
va conţine un singur număr natural, reprezentând numărul lanţurilor distincte modulo .
Restricții și precizări
- Pentru din teste .
- Pentru alte din teste .
Exemplul 1
lant.in
10 3
lant.out
3
Explicație
Avem trei lanţuri distincte cu ochiuri din segmente:
Exemplul 2
lant.in
21 4
lant.out
2520