Neviem, či si to viete predstaviť, ale život takéto Krtka vôbec nie je jednoduchý. Krtko má viacero úloh, ktoré musí spraviť. Napr. vykopať tunel, rozryť nejakú záhradu, natočiť nové diely Krtka, pripraviť niekoľko sústredení a v neposlednom rade napísať bakalárku. Nie je to také jednoduché, ale keďže Krtko sa snaží pristupovať ku všetkým úlohám férovo, priradil každej úlohe nejakú prioritu. Navyše chce, aby pre každé dve úlohy platilo, že dôležitej z nich venuje viac času. Krtka teraz zaujíma koľkými spôsobmi vie rozdeliť svoj čas medzi jeho úlohy. Keďže táto úloha nie je medzi Krtkovými, musíte ju vyriešiť vy.
Krtko má $n$ úloh a $m$ času. Tento čas chce (celý) rozdeliť medzi tieto úlohy tak, aby dôležitejšia úloha dostala viac času. Žiadne dve úlohy nie sú rovnako dôležité. Vašou úlohou je vypočítať, koľkými spôsobmi sa to dá urobiť. Keďže Krtkovi sa z veľkých čísel točí hlava, vypíšte toto číslo modulo $10^9+7$ ($1\,000\,000\,007$).
Na jedinom riadku vstupu sú čísla $n$ a $m$ - počet úloh, ktoré má Krtko, a čas, ktorý chce celý Krtko úlohám venovať.
Vypíšte jedno číslo - počet spôsobov, koľkými krtko dokáže rozdeliť svoj čas medzi zadané úlohy. Keďže toto číslo môže byť veľmi veľké, vypíšte ho modulo $10^9+7$.
V každej sade platí, že $0 \leq n \leq 100$, $1 \leq m < 50\,000$
Input:
2 4
Output:
2
Buď rozdelí čas medzi úlohy ako 0 a 4, alebo ako 1 a 3. Menej dôležitej úlohe nemôže venovať 2 alebo viac času, lebo potom by dôležitejšej úlohe nemohol venovať viac času ako menej dôležitej (teda viac ako 2).
Korešpondenčný seminár z programovania zastrešuje občianske združenie Trojsten.
Trojsten, o.z.
FMFI UK, Mlynská dolina
842 48 Bratislava
Programátorská súťaž pre základoškolákov
Materiály a úlohy na výučbu programovania
Intenzívny programátorský zážitok v lete