Cerință
Cei copii din clasa lui Matei organizeaza o serbare de Craciun. Unii copii au fost deosebit de mult ajutati de alti copii pentru teme, asa ca doresc sa ii multumeasca oferindu-le cadouri. Mai concret, un copil () va face una din urmatoarele doua actiuni:
- Va veni cu mainile in buzunar, fara sa aduca niciun cadou.
- Cum a fost deosebit de mult ajutat de un coleg, ii va oferi un cadou.
Pentru a reprezenta situatia din clasa, notam daca copilul ii aduce un cadou copilului . Daca un copil nu aduce un cadou atunci . Evident, un copil nu isi poate face singur un cadou.
Pentru a scapa mai repede de gasitul cadourilor, copiii se vor imparti in grupuri. Toti copiii din cadrul unui grup se vor aduna impreuna si vor conveni o singura idee de cadou, urmand sa il achizitioneze fiecare si sa-l ofere mai departe destinatarilor. Copiii care nu dau cadouri nu fac parte din niciun grup.
Totusi, acestia vor sa se asigure ca niciun copil nu va primi doua sau mai multe cadouri identice. In plus, niciun copil nu si-ar dori sa primeasca cadoul pe care insusi acesta l-a oferit altui coleg. Mai exact, pentru orice copil (), cadoul oferit de acesta trebuie sa fie diferit de cadourile primite, iar cadourile primite sa fie distincte intre ele. Ar fi foarte dezamagitor sa primesti de Craciun un cadou pe care l-ai oferit chiar tu, sau de mai multe ori aceeasi cadou!
Care este numarul minim de grupuri care se pot forma, astfel incat toti copiii sa fie fericiti?
Date de intrare
Pe prima linie se da numarul de copii. Pe urmatorul linie se dau numere: . Daca , atunci copilul nu va face niciun cadou. Astfel, copilul va oferi un cadou copilului .
Date de ieșire
Pe prima linie se vor afisa numere. Al -lea numar reprezinta indicele grupului celui de-al -lea copil. Grupurile trebuie indexate de la . Daca un copil nu face parte din niciun grup, valoarea corespunzatoare afisata trebuie sa fie egala cu .
Daca sunt mai multe solutii valide, se va accepta oricare dintre ele.
Restricții și precizări
- ;
- , pentru orice .
- Pentru orice
Subtask-uri
| # | Punctaj | Restricții |
|---|---|---|
| 1 | 20 | |
| 2 | 20 | este o permutare a numerelor de la la |
| 3 | 20 | |
| 4 | 40 | Nicio constrângere suplimentară |
Exemplul 1
stdin
5
2 0 -1 0 3
stdout
1 0 -1 2 1
Exemplul 2
stdin
4
1 2 3 0
stdout
0 1 0 1
Exemplul 3
stdin
3
-1 -1 -1
stdout
-1 -1 -1