Korupcija
문제
... Korupcija svima, a ne samo njima. Ja nudim korupciju, koruptivni red, rad i rast. Sve što vam ovi majstori ponude, ja nudim duplo. Predlažem i osmi padež: Kome? Koliko? ...
Mali Mirko bio je očaran govorom stričeka s televizije. Bio je uvjeren kako je razumio poruku: morao je korumpirati bitove svojih binarnih brojeva.
Mirko promatra brojeve 0, 1, \dots , 2^N − 1 (kao binarne brojeve s binarnih znamenki). Vođen željom za korupcijom, Mirko će izabrati dva broja i (0 ≤ X, Y < 2^N) koja se razlikuju u točno jednom bitu. Mirko će tada prebrisati taj bit znakom “?” u oba broja i , čime je postigao korupciju: brojevi i više se ne mogu razlikovati. Mirko će ponavljati ovaj postupak s preostalim brojevima, dok na kraju ne dobije ukupno 2^N−1 parova brojeva koji se ne mogu razlikovati. Dakle, svaki broj između i 2^N − 1 član je točno jednog para i dva broja mogu biti u paru isključivo ako se razlikuju u točno jednom bitu (binarnoj znamenci).
Radi većeg izazova, Mirko je odlučio da želi imati točno ai parova kojima znak “?” stoji na mjestu i-tog bita, za i = 0, 1, \dots , N − 1. Pri tome, bitove brojimo od manje značajnih do više značajnih, pa tako -ti bit odgovara vrijednosti . Pomozite Mirku te napravite odabir parova koji zadovoljava tražene uvjete, ili odredite kako takav odabir ne postoji.
입력
U prvom je retku prirodan broj iz teksta zadatka.
U drugom je retku niz od nenegativnih cijelih brojeva , za i = 0, \dots , N − 1, pri čemu predstavlja traženi broj parova koji se razlikuju u -tom bitu. Zbroj tih brojeva iznosi točno 2^N−1.
출력
Ukoliko nije moguće napraviti odabir parova koji zadovoljava uvjete zadatka, u jedini redak ispišite -1.
Inače, ispišite 2^N−1 redaka. U svaki redak ispišite dva razmakom odvojena broja i koji predstavljaju odabrani par. Parove možete ispisati u bilo kojem redoslijedu.
Ukoliko postoji više rješenja, ispišite bilo koje.
예제
예제 1
2 2 0
0 1 2 3
예제 2
2 1 1
-1
예제 3
3 2 0 2
0 1 2 6 3 7 4 5