Tenisas

Norėdamas susirasti naujų narių teniso klubas suorganizavo Teniso savaitę. Žaisti parodomuosiuose susitikimuose buvo pakviesta daug teniso žvaigždžių. Kiekvienas pakviestasis žaidėjas nurodė, kiek žaidimų jis sutinka sužaisti. Kad pakviestiesiems žaidėjams nebūtų nuobodu, organizatoriai nutarė sudaryti tokį žaidimo tvarkaraštį, kad bet kurie du žaidėjai tarpusavyje susitiktų ne daugiau kaip vieną kartą. 

UŽDUOTIS
Parašykite programą, kuri suskirstytų pakviestus žaidėjus į poras taip, kad kiekvienas žaidėjas žaistų tiek žaidimų, kiek jis sutiko žaisti ir su jokiu žaidėju nežaistų daugiau kaip vieną kartą. Suprantama, žaidėjas negali žaisti pats su savimi. 

PRADINIAI DUOMENYS
Pirmoje pradinių duomenų bylos tennis.in eilutėje įrašytas žaidėjų skaičius N (2N1000). Likusiose N eilučių įrašyta po vieną skaičių: kiek žaidimų Gi (1Gi<N) sutiko žaisti atitinkamas žaidėjas. Laikoma, kad žaidėjai sunumeruoti nuo 1 iki N ta pačia tvarka, kokia pateikti jų pageidavimai pradinių duomenų byloje. 

REZULTATAI
Pirmoje rezultatų bylos tennis.out eilutėje įrašykite NO SOLUTION, jei neįmanoma sudaryti tokio tvarkaraščio, kad visų kviestinių žaidėjų norai būtų patenkinti, arba SOLUTION, jei tokį tvarkaraštį įmanoma sudaryti. 

Jei tvarkaraštį sudaryti galima, įrašykite jį tolesnėse N eilučių. Kiekvienoje eilutėje įrašykite žaidėjo, kurio norimų žaisti žaidimų skaičius buvo nurodytas atitinkamoje pradinių duomenų eilutėje, oponentų numerius. Eilutėje surašyti numeriai turi būti pateikti didėjimo tvarka ir atskirti tarpais. 

Jei galimi keli sprendiniai, pateikite vieną iš jų.

PRADINIŲ DUOMENŲ IR REZULTATŲ PAVYZDŽIAI

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

3
1
2
1

SOLUTION
2
1 3
2

(tennis.in)		(tennis.out)

NO SOLUTION

3
2
2
1

VERTINIMAS
Šiame uždavinyje programa gaus taškus už testus, kuriems negalima sudaryti tvarkaraščio (t.y. kur teisingas rezultatas yra NO SOLUTION), tik tada, jei ji įveiks bent pusę testų, kuriuose sprendinys yra galimas.