Monetų krūvelės

Draugas Jums paaiškina paprastą žaidimą. Jis sukrauna keletą krūvelių iš vienodų monetų. Jūs galite perkelti tam tikrą skaičių monetų iš vienos krūvelės (pažymėkime ją A) į kitą krūvelę (pažymėkime ją B) tik tada, jeigu monetų skaičius, kurį Jūs paimate iš krūvelės A, yra lygus monetų skaičiui krūvelėje B prieš monetų perkėlimą. T.y. ėjimas padvigubina monetų skaičių krūvelėje B. Jūsų užduotis – išlyginti krūveles (t.y. pasiekti, kad monetų skaičius visose krūvelėse būtų vienodas) atliekant kuo mažiau ėjimų. 

Kadangi Jums nelabai aišku, kaip žaisti, draugas pateikia pavyzdį.
Yra trys krūvelės, kuriose yra 4, 6 ir 14 monetų atitinkamai. Galima išlyginti krūveles perkeliant 6 monetas iš trečios krūvelės į antrąją (dabar krūvelėse yra 4, 12 ir 8 monetos), o tada 4 monetas iš antros krūvelės į pirmąją. Dabar visos krūvelės yra vienodo aukščio (8 monetos) – baigta! Kadangi krūvelių negalima išlyginti atlikus mažiau ėjimų, minimalios ėjimų sekos ilgis – 2.

UŽDUOTIS
Žinoma kiek yra krūvelių ir koks monetų skaičius kiekvienoje krūvelėje. Parašykite programą, kuri suskaičiuotų per kiek mažiausiai ėjimų galima išlyginti krūveles (krūvelių skaičius negali sumažėti) ir rastų minimalią ėjimų seką. 

Pradiniai duomenys bus tokie, kad sprendinys visada egzistuos (t.y. bendras visose krūvelėse esančių monetų skaičius dalinsis be liekanos iš krūvelių skaičiaus) ir krūveles bus galima išlyginti atlikus 8 ar mažiau ėjimų (M £ 8).

PRADINIAI DUOMENYS
Pradinių duomenų bylą stacks.in sudaro dvi eilutės. Pirmoje eilutėje įrašytas krūvelių skaičius 
S (1£S£8). Krūvelės yra sunumeruotos nuo 1 iki S. Antrojoje eilutėje įrašyta S skaičių 
Hi (1£Hi£70, 1£i£S). Hi nusako i-tosios krūvelės aukštį (t.y. ją sudarantį monetų skaičių) žaidimo pradžioje. Jūsų draugas nėra labai turtingas, taigi jis nenaudos žaidimui daugiau nei 200 monetų, t.y. .

REZULTATAI
Pirmoje rezultatų bylos stacks.out eilutėje įrašykite minimalų ėjimų, kurių reikia norint išlyginti krūveles, skaičių M. 

Toliau įrašykite M eilučių, aprašančių ėjimus tą tvarka, kuria jie yra atliekami. Kiekvienoje eilutėje įrašykite po du sveikuosius skaičius F ir T. F – tai krūvelės, iš kurios imate monetas, numeris, o T – krūvelės, į kurią padedate paimtas monetas, numeris.

PRADINIŲ DUOMENŲ IR REZULTATŲ PAVYZDŽIAI

Pradiniai duomenys 		Rezultatai 		
(stacks.in)		(stacks.out)

2
3 2
2 1

3
4 6 14