Primality game

Time limit: 1s Memory limit: 64MB Input: Output:

Cerință

Alex și Bogdan se plictiseau la ora de informatică, așa că au inceput să se joace un joc cu numere. În acest joc, Bogdan a scris pe o foaie un șir de NN numere, cu valori cumprinse între 00 și K1K - 1, și i-a cerut lui Alex să aleagă o proprietate pe care șirul să o îndeplinească. Dacă șirul îndeplinește proprietatea aleasă, atunci Alex câstigă jocul, altfel Bogdan va fi desemnat castigator.

După un timp de gândire, Alex alege următoarea proprietate: "Suma oricărei subsecvență din șirul scris de Bogdan a cărei lungime este un număr prim, trebuie să fie divizibilă cu 3.". Alex nu știe cat de bună a fost alegerea sa, așa că vă roagă sa determinați numărul de șiruri pe care le-ar fi putut scrie Bogdan care să îndeplinească proprietatea aleasă de el.

Date de intrare

Pr prima linie se vor regăsi cele două valori, NN și KK, cu însemnătatea din enunț.

Date de ieșire

Pe prima linie se va afișa răspunsul la cerință, și anume numărul de șiruri diferite pe care le-ar fi putut scrie Bogdan. Deoarece acest număr poate fi foarte mare, se cere să se afișeze modulo 1 000 000 0071 \ 000 \ 000 \ 007.

Restricții și precizări

  • 1N1 000 000 0001 \leq N \leq 1 \ 000 \ 000 \ 000;
  • 1K1 000 000 0001 \leq K \leq 1 \ 000 \ 000 \ 000;

Exemplu

stdin

2 4

stdout

6

Explicație

Șirurile pe care le putea alege Bogdan sunt după cum urmează:

  • 0 00 \ 0;
  • 0 30 \ 3;
  • 1 21 \ 2;
  • 2 12 \ 1;
  • 3 03 \ 0;
  • 3 33 \ 3.

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