U nedavnoj poseti hramu u Luksoru naišli ste na interesantnu, drevnu zagonetku. Naime, staroegipatski mudraci su voleli da množe i da računaju XOR-vrednost parova prirodnih brojeva. Naišli ste na tablu na kojoj je ispisano parova nenegativnih celih brojeva . Interesantno je da je kod svih ovih parova broj neparan. Vaš zadatak je da za svaki od tih parova pronađete dva prirodna broja takva da važi i . Moguće je da takav par ne postoji, ukoliko je to slučaj, ispišite .
Opis ulaza
U prvoj liniji standardnog ulaza nalazi se prirodan broj . U narednih linija nalaze se po dva nenegativna cela broja odvojena razmakom, i .
Opis izlaza
U redova, po jedan za svaki upit, ispisati traženi par , odvojen razmakom. Ukoliko takav par ne postoji, ispisati . Ukoliko ima više rešenja, ispisati bilo koje.
Primer 1
Ulaz
4
21 4
2795079079011879151 119681854
9 0
9 2
Izlaz
3 7
1679133257 1664596343
3 3
-1
Ograničenja
- je neparan.
Test primeri su podeljeni u 3 disjunktne grupe:
- U test primerima vrednim 20 poena: i .
- U test primerima vrednim 20 poena: .
- U test primerima vrednim 60 poena: Bez dodatnih ograničenja.
Napomena
Operator XOR, odnosno ekskluzivnu disjunkciju u C++ zapisujemo pomoću simbola ^
. Ova operacija se za nenegativne cele brojeve definiše na sledeći način. Prvo se brojevi zapišu u binarnom zapisu. Ukoliko jedan broj ima manje cifara od drugog, dopisuju mu se vodeće nule sve dok ne budu imali isti broj binarnih cifara. Tako se dobijaju dva niza binarnih cifara, označimo ih sa i . Zatim se za svaku poziciju računa pomoću sledećih pravila:
- Za važi
- Za važi
- Za važi
- Za važi
Niz binarnih cifara (koji možda ima vodeće nule) je binarni zapis rezultata, odnosno broja .
Comments