Hulk vuole organizzare una scuola per supereroi.
A tal fine, vuole invitare N supereroi che verranno numerati da 1 a N e dovranno superare due prove P.
La prima prova (P=1) prevede che i supereroi vengano messi di fronte a N cattivi, anch’essi numerati da 1 a N.
La prova è suddivisa in N round.
In ciascun round, ogni supereroe deve affrontare uno dei cattivi.
In uno stesso round, non ci possono essere due o più supereroi che affrontano lo stesso cattivo oppure due o più cattivi che si oppongono allo stesso supereroe.
Inoltre, ogni supereroe deve affrontare tutti gli N cattivi negli N round previsti per la prova.
Per esempio, per N=3, una soluzione è data dai tre round [(1,1), (2,2), (3,3)], [(1,3), (2,1), (3,2)] e [(1,2), (2,3), (3,1)], dove la coppia (I,J) indica che il supereroe numero I affronta il cattivo numero J.
In generale altre soluzioni sono possibili, mentre alcune configurazioni non sono risposte valide, come per esempio
organizzare i seguenti tre round [(1,1), (2,2), (3,3)], [(1,3), (2,1), (3,2)] e [(1,3), (2,2), (3,1)], i quali violano le regole suddette.
La seconda prova (P=2) prevede che i supereroi debbano quindi affrontarsi tra di loro.
La prova consiste in N-1 round. In ciascun round, i supereroi si affrontano a due a due.
Ogni supereroe deve affrontare tutti gli altri N-1 supereroi negli N-1 round previsti per la prova.
Per esempio, per N=4, una soluzione è data dai tre round [(1,2), (3,4)], [(1,3), (2,4)] e [(1,4), (2,3)], dove la coppia (I,J) indica che i due supereroei numero I e J si affrontano.
Aiuta Hulk a organizzare le due prove specificando le coppie che devono affrontarsi in ciascuno dei round.
Il tuo obiettivo è di organizzare N round nella prima prova e N-1 round nella seconda prova, permettendo a tutti di affrontarsi secondo le regole riportate sopra.
Per facilitarti il compito, nella seconda prova il valore di N è una potenza di 2 (N = 2, 4, 8, 16, 32, 64, …).
Dati in Input
Il file input.txt è composto da una riga contenente due interi N e P separati da uno spazio, dove N è il
numero di supereroi (e di cattivi) e P è il numero della prova da organizzare in round (ossia vale P=1 oppure P=2).
Dati in Output
Il formato del file output.txt dipende dal valore P specificato nel file input.txt.
- Se P=1, il file output.txt è composto da N righe. Ciascuna riga individua un round e contiene 2N interi separati da uno spazio che, quando vengono presi a due a due, rappresentano le N coppie che si affrontano nel round.
- Se P=2, il file output.txt è composto da N-1 righe. Ciascuna riga individua un round e contiene N interi separati da uno spazio che, quando vengono presi a due a due, rappresentano le N/2 coppie che si affrontano nel round.
Assunzioni
- 2 <= N <= 2100
Esempi
input.txt | output.txt | |
---|---|---|
1 | 3 1 | 1 1 2 2 3 3 1 3 2 1 3 2 1 2 2 3 3 1 |
2 | 3 1 | 1 3 2 1 3 2 1 1 2 2 3 3 2 3 1 2 3 1 |
3 | 4 2 | 1 2 3 4 1 3 2 4 1 4 2 3 |
4 | 4 2 | 1 3 2 4 1 2 3 4 3 2 1 4 |
Note
- Nella prima prova, le coppie (I,J) e (J,I) rappresentano due situazioni diverse, in quanto la prima componente della coppia indica il supereroe e la seconda indica il cattivo.
- Nella seconda prova, le coppie (I,J) e (J,I) hanno medesimo significato: i supereroi I e J si affrontano.