Barátok

Barátok között előfordul, hogy kölcsönadnak egymásnak kisebb-nagyobb pénzösszegeket. Ösztöndíj fizetésekor azonban kiegyenlítik a tartozásokat. Ezért pontosan feljegyzik, hogy ki kitől, mekkora összeget vett kölcsön. Szeretnék optimalizálni a tartozások kiegyenlítését, azaz a legkevesebb pénzmozgatással megoldani.

Feladat

Írj programot, amely

Bemenet

A BARATOK.BE szöveges állomány első sora a barátok N (0 < N <= 10000) számát tartalmazza. A barátokat a sorszámukkal azonosítjuk 1-től N-ig. A második sorban a tranzakciók K száma áll (0 <= K <= 30000). A következő K sor mindegyike három egész számot; X, Y , P, (0 <= X, Y <= N, N != Y , 0 < P <= 30000) tartalmaz egy-egy szóközzel elválasztva, ami egy tranzakciót ír le, az X személy az Y személytől P összeget vett kölcsön a hónap során valamikor.

Kimenet

A BARATOK.KI szöveges állomány első sorába azt a minimális összeget kell írni, amennyi a tartozások optimális kiegyenlítése esetén átutalásra kerül. A következő sorokban kell megadni egy kiegyenlítést eredményező optimális átutalási sorozatot. Minden sorban három szám szerepeljen egy-egy szóközzel elválasztva, X Y P, ami azt jelenti, hogy az X személy az Y személynek P összeget utal át a kiegyenlítés során. Nem kikötés, hogy X kölcsönkért Y-tól, és előfordulhat, hogy egy személy több másik személynek is átutal a megoldásban.

Példa

 

 

(Olimpiai válogatóverseny 2000)