Напомена: ово је незванична копија задатака. Као таква, не гарантује се да ће овај сајт бити одржаван, и немојте се изненадити ако са њега задаци одједном нестану.
Професор Феђа, страствени риболовац и обожавалац роњења на дах, пронашао је свој 14. омиљени хоби - заборављање низова. Ова новооткривена дисциплина тече на следећи начин:
На почетку, Феђа замисли низ \(A\) са \(N\) природних бројева. Након тога он на папиру запише низ \(B\) са тачно \(\frac{N (N+1)}{2}\) бројева. Чланови низа \(B\) су добијени применом битовне операције \(\ \text{or} \ \) (видети напомену) на све парове бројева из низа \(A\), прецизније:
За сваки уређени пар индекса (\(i, j\)), (\(1 \leq i \leq j \leq N\)) из низа \(A\) у низу \(B\) је записана вредност \(A_i \ \text{or} \ A_j\). Ако је нека вредност иста за више парова, она се у низу \(B\) појаљује тачно онолико пута колико има парова са том вредношћу. Ове вредности се у низу \(B\) могу јавити у произвољном редоследу.
Наравно, професор се уморио након записивања свих ових бројева и у потпуности заборавио првобитно замишљени низ \(A\). Срећом на папиру му је остао записан низ \(B\). Да ли можете да помогнете нашем драгом професору и пронађете изгубљени низ \(A\)?
У првој линији стандардног улаза налази се један природан број \(N\), дужина изгубљеног низа \(A\). У другој линији стандардног улаза налази се \(\frac{N (N+1)}{2}\) природних бројева, елементи низа \(B\) описаног у тексту задатка.
У јединој линији стандардног излаза исписати \(N\) природних бројева, елементе изгубљеног низа \(A\). Гарантује се да су улазни подаци такви да постоји бар један одговарајући низ. Ако постоје више могућих низова, исписати било које решење.
3
5 4 2 3 1 6
1 4 2
Изгубљени низ \(A\) има \(N=3\) члана и треба га пронаћи користећи низ \(B=[5, 4, 2, 3, 1, 6]\). Један од могућих низова је \(A = [1, 4, 2]\). Ако применимо битовну операцију \(or\) на све парове бројева у низу \(A\) добијамо:
У свим тест примерима важе ограничења
Тест примери су подељени у \(3\) дисјунктне групе:
Оператор дисјункције у Pascal-u је означен са or
, док у
C++ га записујемо помоћу симбола |
. Ова операција \(x\ \text{or} \ y\) се за ненегативне целе
бројеве \(x,y\) дефинише на следећи
начин. Прво се бројеви запишу у бинарном запису. Уколико један број има
мање цифара од другог, дописују му се водеће нуле све док не буду имали
исти број бинарних цифара. Тако се добијају два низа бинарних цифара,
означимо их са \(a_1, \ldots, a_k\) и
\(b_1, \ldots b_k\). Затим се за сваку
позицију \(i \in \{1, \ldots, k \}\)
рачуна \(c_i\) помоћу следећих
правила:
Низ бинарних цифара \(c_1, \ldots, c_k\) (који можда има водеће нуле) је бинарни запис резултата, односно броја \(x \ \text{or} \ y\).