lant

Time limit: 0.06s Memory limit: 32MB Input: lant.in Output: lant.out

Cerință

Avem la dispoziţie mm segmente, toate de aceeaşi lungime. Din aceste segmente se pot construi poligoane închise de lungime 33, 44, 55, etc. pe care le vom numi ochiuri.

Aceste ochiuri vor fi legate între ele cu ajutorul a 00 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 33 ochiuri din 1616 segmente.

Două lanţuri se consideră echivalente dacă conţin acelaşi număr mm de segmente, acelaşi număr kk 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 11 şi 22 sunt echivalente, iar lanţurile din exemplele 33 şi 44 diferă de celelalte trei lanţuri.

Să se determine numărul de lanţuri diferite formate din mm segmente şi având kk ochiuri.

Date de intrare

Fişierul lant.in conţine pe o singură linie cele două numere naturale mm şi kk 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 666 013666 \ 013.

Restricții și precizări

  • 3m600 0003 \leq m \leq 600 \ 000
  • km3k \leq \frac{m}{3}
  • Pentru 30%30\% din teste m200m \leq 200.
  • Pentru alte 30%30\% din teste m1 500m \leq 1 \ 500.

Exemplul 1

lant.in

10 3

lant.out

3

Explicație

Avem trei lanţuri distincte cu 33 ochiuri din 1010 segmente:

Exemplul 2

lant.in

21 4

lant.out

2520

Log in or sign up to be able to send submissions!