maxhits

Time limit: 0.6s Memory limit: 256MB Input: maxhits.in Output: maxhits.out

Andrei, Bogdan și Claudia joacă un joc cu NN ținte așezate pe un rând și cu un pistol de vopsit de putere KK.

Inițial, fiecare țintă este vopsită în alb și are scris pe ea numărul 00. O țintă se numește liberă dacă este albă și are scris pe ea numărul 00.

Jocul se desfășoară în mutări care lovesc cel mult KK ținte consecutive. La a ii-a mutare, toate țintele lovite de acea mutare sunt vopsite în culoarea mutării, iar pe fiecare dintre ele se scrie numărul ii. Bogdan este interesat doar de culorile țintelor. El vrea să știe numărul BB de colorări diferite care pot apărea după un joc terminat în care numărul maxim posibil este scris pe cel puțin o țintă. Două colorări sunt diferite dacă există cel puțin o țintă care are culori diferite în cele două colorări.

Există trei tipuri de mutări: Albastre, Galbene și Roșii:

  • O mutare Albastră alege exact KK ținte consecutive. O astfel de mutare este validă dacă toate țintele alese sunt libere, iar ținta imediat din stânga și ținta imediat din dreapta există și sunt, de asemenea, libere.
  • O mutare Galbenă este permisă doar dacă nu mai există nicio mutare Albastră validă. Ea alege câteva ținte libere consecutive și le vopsește în galben. Țintele alese trebuie să aibă o țintă liberă imediat în stânga și o țintă liberă imediat în dreapta, iar mutarea trebuie să fie maximală: nu poate fi extinsă nici la stânga, nici la dreapta păstrând această proprietate. Echivalent, o mutare Galbenă acționează asupra unui bloc maximal de ținte libere de lungime între 33 și K+1K + 1 și vopsește toate țintele din acel bloc, cu excepția primei și ultimei.
  • O mutare Roșie este permisă doar dacă nu mai există nicio mutare Albastră sau Galbenă validă. Ea alege un bloc maximal de ținte libere consecutive și îl vopsește în întregime în roșu. O mutare Roșie lovește întotdeauna fie 11, fie 22 ținte.

Jocul se termină când nu mai există nicio țintă liberă.

Andrei este interesat de cel mai mare număr AA care poate fi scris pe o țintă după terminarea jocului.

Bogdan este interesat doar de culorile țintelor. El vrea să știe numărul BB, câte colorări diferite pot apărea după un joc terminat în care numărul maxim posibil este scris pe cel puțin o țintă. Două colorări sunt diferite dacă există cel puțin o țintă care are culori diferite în cele două colorări.

Claudia este interesată doar de numerele scrise pe ținte. Ea vrea să știe numărul CC, câte numerotări diferite pot apărea după un joc terminat în care numărul maxim posibil este scris pe cel puțin o țintă. Două numerotări sunt diferite dacă există cel puțin o țintă care are numere diferite în cele două numerotări.

Cerință

Ajutați-i pe cei trei să își afle numerele lor, AA, BB și respectiv CC. Deoarece răspunsurile pentru Bogdan și Claudia pot fi foarte mari, calculați-le modulo 1 000 000 0071 \ 000 \ 000 \ 007. Atenție! Numărul AA trebuie calculat fără niciun modulo.

Date de intrare

Pe prima linie a fișierului de intrare maxhits.in se află TT, numărul de scenarii de joc la care va trebui să răspundeți. Fiecare dintre următoarele TT linii conține câte două numere, NN și KK, în această ordine și cu semnificația din enunț.

Date de ieșire

În fișierul de ieșire maxhits.out se vor afișa TT linii fiecare conținând 33 numere, al ii-lea triplet reprezentând răspunsul pentru AA, BB și CC, în această ordine, pentru al ii-lea scenariu de joc.

Restricții și precizări

  • 1T100 0001 \leq T \leq 100 \ 000
  • KN1011K \leq N \leq 10^{11}
  • 3K500 0003 \leq K \leq 500 \ 000
  • 1NK500 0001 \leq \frac{N}{K} \leq 500 \ 000
  • Pentru fiecare test, dacă toate valorile AA-urilor sunt corecte se va acorda 40%40\% din punctaj.
  • Pentru fiecare test, dacă toate valorile BB-urilor sunt corecte se va acorda 30%30\% din punctaj.
  • Pentru fiecare test, dacă toate valorile CC-urilor sunt corecte se va acorda 30%30\% din punctaj.
  • Atenție! Trebuie afișate răspunsuri (posibil incorecte) pentru toate cele trei numere AA, BB și CC pentru obținerea punctajelor parțiale.
# Punctaj Restricții
11 22 T5T \leq 5, N10N \leq 10
22 44 T5T \leq 5, N20N \leq 20
33 33 T5T \leq 5, N100N \leq 100
44 44 T105T \leq 10^5, N100N \leq 100
55 55 T5T \leq 5, N1 000N \leq 1 \ 000
66 77 T105T \leq 10^5, N1 000N \leq 1 \ 000
77 1111 T105T \leq 10^5, K=3K = 3
88 55 T5T \leq 5, N1 000 000N \leq 1 \ 000 \ 000
99 66 T105T \leq 10^5, N1 000 000N \leq 1 \ 000 \ 000
1010 1010 T105T \leq 10^5, suma de NKN \cdot K pentru toate scenariile din fișier 50 000 000\leq 50 \ 000 \ 000
1111 1313 T105T \leq 10^5, K1 000K \leq 1 \ 000
1212 1212 T105T \leq 10^5, N1 000 000 000N \leq 1 \ 000 \ 000 \ 000
1313 1818 Fără restricții suplimentare

Exemplu

maxhits.in

3
5 3
20 7
123456789 54321

maxhits.out

3 1 2
7 13 624
9091 668672468 892007695

Explicație

Pentru primul exemplu, avem N=5N = 5 și K=3K = 3.

Singura mutare Albastră validă este pe țintele 22, 33, 44, deoarece acestea sunt trei ținte consecutive libere și au câte o țintă liberă imediat în stânga și în dreapta.

După această mutare, mai rămân libere doar țintele 11 și 55. Nu mai există nicio mutare Albastră sau Galbenă validă, deci cele două ținte rămase vor fi lovite prin mutări Roșii. Ele pot fi lovite în două ordini diferite.

În ambele stări, cel mai mare număr scris pe o țintă este 33, deci A=3A = 3.

Există o singură colorare posibilă: țintele 22, 33, 44 sunt Albastre, iar țintele 11 și 55 sunt Roșii. Deci B=1B = 1.

Există două numerotări posibile, deoarece cele două mutări Roșii pot fi făcute în două ordini diferite. Deci C=2C = 2.

Pentru al doilea exemplu, unde N=20N = 20 și K=7K = 7, iată o stare finală posibilă care atinge valoarea maximă A=7A = 7.

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