Un gospodar are iepuri (pe care i-a numerotat de la la ) şi foarte mulţi morcovi. Ce e mai deosebit în această gospodărie este că iepurii sunt organizaţi ierarhic, în funcţie de vârstă, autoritate şi nevoile nutriţionale. Astfel, fiecare iepure are exact un şef direct (exceptându-l pe Rilă Iepurilă, care este şeful cel mare, şeful tuturor iepurilor). Orice iepure poate avea 0, 1 sau mai mulţi subordonaţi direcţi. Orice iepure-şef va mânca cel puţin un morcov mai puţin decât fiecare dintre subordonaţii săi direcţi.
Gospodarul nu se poate hotărî câţi morcovi să dea fiecărui iepure şi ar vrea să ştie în câte moduri poate împărţi morcovi la iepuri ştiind că fiecare iepure poate să mănânce minim un morcov şi maxim morcovi.
Cerinţă
Scrieţi un program care calculează numărul de posibilităţi modulo de a împărţi morcovi la cei iepuri ştiind că orice iepure poate mânca între şi morcovi şi trebuie să mănânce cu cel puţin un morcov mai puţin decât fiecare dintre iepurii care îi sunt subordonaţi direcţi.
Date de intrare
Fişierul de intrare iepuri.in
conţine:
- pe prima linie două numere naturale şi , separate printr-un spaţiu, reprezentând numărul de iepuri, respectiv numărul maxim de morcovi ce pot fi mâncaţi de un iepure.
- pe fiecare din următoarele linii se află câte două numere naturale distincte şi , cuprinse între şi , separate printr-un spaţiu, cu semnificaţia că iepurele este şeful direct al iepurelui .
Date de ieşire
Fişierul de ieşiere iepuri.out
va conţine numărul de moduri de a împărţi morcovii conform condiţiilor specificate în enunţ, modulo .
Restricţii şi precizări
- Numărul ce trebuie scris în fişierul de ieşire va fi afişat modulo .
Exemplu
iepuri.in
9 4
7 2
7 3
7 4
3 5
3 6
5 8
5 9
6 1
iepuri.out
9