Submit solution


Points: 1
Time limit: 2.0s
Memory limit: 552M

Problem type

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 T parova nenegativnih celih brojeva A_i, B_i. Interesantno je da je kod svih ovih parova broj A_i neparan. Vaš zadatak je da za svaki od tih parova pronađete dva prirodna broja X_i, Y_i takva da važi A_i = X_iY_i i B_i = X_i \text{ xor } Y_i. Moguće je da takav par ne postoji, ukoliko je to slučaj, ispišite -1.

Opis ulaza

U prvoj liniji standardnog ulaza nalazi se prirodan broj T. U narednih T linija nalaze se po dva nenegativna cela broja odvojena razmakom, A_i i B_i.

Opis izlaza

U T redova, po jedan za svaki upit, ispisati traženi par X_i, Y_i, odvojen razmakom. Ukoliko takav par ne postoji, ispisati -1. 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

  • 1 \leq T \leq 10.000
  • 0 \leq A_i, B_i < 2^{62}
  • A_i je neparan.

Test primeri su podeljeni u 3 disjunktne grupe:

  • U test primerima vrednim 20 poena: T \leq 10 i A_i, B_i \leq 10^{13}.
  • U test primerima vrednim 20 poena: T \leq 500.
  • U test primerima vrednim 60 poena: Bez dodatnih ograničenja.

Napomena

Operator XOR, odnosno ekskluzivnu disjunkciju u C++ zapisujemo pomoću simbola ^. Ova operacija x\ \text{xor} \ y se za nenegativne cele brojeve x,y 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 a_1, \ldots, a_k i b_1, \ldots b_k. Zatim se za svaku poziciju i \in \{1, \ldots, k \} računa c_i pomoću sledećih pravila:

  • Za a_{i} = 0, b_{i} = 0 važi c_{i} = 0
  • Za a_{i} = 0, b_{i} = 1 važi c_{i} = 1
  • Za a_{i} = 1, b_{i} = 0 važi c_{i} = 1
  • Za a_{i} = 1, b_{i} = 1 važi c_{i} = 0

Niz binarnih cifara c_1, \ldots, c_k (koji možda ima vodeće nule) je binarni zapis rezultata, odnosno broja x \ \text{xor} \  y.


Comments

There are no comments at the moment.