Un gospodar are N
iepuri (pe care i-a numerotat de la 1
la N
) ș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 K
morcovi.
Cerința
Scrieți un program care calculează numărul de posibilități modulo 30011
de a împărți morcovi la cei N
iepuri știind că orice iepure poate mânca între 1
și K
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 iepuri1.in
conține pe prima linie două numere naturale N
şi K
, 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 N-1
linii se află câte două numere naturale distincte a
și b
, cuprinse între 1
și N
, separate printr-un spațiu, cu semnificația că iepurele a
este șeful direct al iepurelui b
.
Date de ieșire
Fișierul de ieșire iepuri1.out
va conține numărul de moduri de a împărți morcovii conform condițiilor specificate în enunț, modulo 30011
.
Restricții și precizări
1 ≤ N, K ≤ 100
- Numărul ce trebuie scris în fişierul de ieşire va fi afişat modulo
30011
.
Exemplu:
iepuri1.in
9 4 7 2 7 3 7 4 3 5 3 6 5 8 5 9 6 1
iepuri1.out
9