program paletta;
var N,i0 ,i, z, dimpari, dimdispari:Longint;
V,P,pari, dispari, controllo: array of longint;
numero_ribaltamenti, piccolidopo,maggioriprima,fuoriposto:int64;
function SOMMA(X:longint):int64;
begin
SOMMA:=0;
while (X > 0) do
begin
SOMMA:=SOMMA+controllo[X];
X:= X- (X and (X+1)) -1 ;
end
end;
Procedure modifica(X:longint; D:longint);
begin
while (X <=D) do
begin
controllo[X]:=controllo[X]+1;
X:=X +(X OR X+1);
end
end;
begin
(*assign(input, 'input.txt'); reset(input);
assign(output, 'output.txt'); rewrite(output);*)
{ Reading input }
readln( N);
Setlength(V, N);
for i0 := 0 to N-1 do
begin
read(V[i0]);
end;
readln;
if N mod 2 = 0 then begin dimpari:=N div 2; dimdispari:= dimpari; end
else begin dimdispari:=N div 2 ; dimpari:= dimdispari +1; end;
Setlength(pari, dimpari);
Setlength(dispari, dimdispari);
Setlength(controllo, N);
for i:=0 to N do controllo[i]:=0;
for i:=0 to N -1 do if i mod 2 =0 then pari[i div 2]:=V[i] div 2 ;
for i:=0 to N -1 do if i mod 2 <> 0 then dispari[i div 2]:=(V[i] -1) div 2 ;
for i:= 0 to dimpari-1 do write(pari[i]); writeln;
for i:= 0 to dimdispari-1 do write(dispari[i]); writeln;
for z := 0 to N-1 do
if (V[z] mod 2 <> z mod 2) then begin writeln(-1) ; exit; end;
i:=0;
while i<=dimpari do
begin
piccolidopo:=0; maggioriprima:=0; fuoriposto:=0;
modifica (controllo[i],N);
piccolidopo:=pari[i]-somma(pari[i]);
maggioriprima:=i-pari[i]+piccolidopo;
fuoriposto:=maggioriprima+piccolidopo;
i:=i+1;
end;
write (fuoriposto,' ');
end.
cHJvZ3JhbSBwYWxldHRhOwp2YXIgTixpMCAsaSwgeiwgZGltcGFyaSwgZGltZGlzcGFyaTpMb25naW50OwogICAgVixQLHBhcmksIGRpc3BhcmksIGNvbnRyb2xsbzogYXJyYXkgIG9mIGxvbmdpbnQ7CiAgICBudW1lcm9fcmliYWx0YW1lbnRpLCBwaWNjb2xpZG9wbyxtYWdnaW9yaXByaW1hLGZ1b3JpcG9zdG86aW50NjQ7CgpmdW5jdGlvbiBTT01NQShYOmxvbmdpbnQpOmludDY0OwogYmVnaW4KICAgIFNPTU1BOj0wOwoJd2hpbGUgKFggPiAwKSAJZG8gCgkgICBiZWdpbgoJICAgIFNPTU1BOj1TT01NQStjb250cm9sbG9bWF07CgkgICAgWDo9IFgtIChYIGFuZCAoWCsxKSkgLTEgOwoJICAgZW5kCiBlbmQ7ClByb2NlZHVyZSBtb2RpZmljYShYOmxvbmdpbnQ7IEQ6bG9uZ2ludCk7CiAgYmVnaW4KICAgICAJd2hpbGUgKFggPD1EKSAJZG8gCiAgICAgICAgCWJlZ2luCgkgICAgICAgICAgY29udHJvbGxvW1hdOj1jb250cm9sbG9bWF0rMTsKCSAgICAgICAgICBYOj1YICsoWCBPUiBYKzEpOwoJICAgICAgIGVuZAogIGVuZDsKIAoKIAoKYmVnaW4KICAgICgqYXNzaWduKGlucHV0LCAnaW5wdXQudHh0Jyk7IHJlc2V0KGlucHV0KTsKICAgIGFzc2lnbihvdXRwdXQsICdvdXRwdXQudHh0Jyk7IHJld3JpdGUob3V0cHV0KTsqKQogICAgICAgIHsgUmVhZGluZyBpbnB1dCB9CglyZWFkbG4oIE4pOwoJU2V0bGVuZ3RoKFYsIE4pOwoJZm9yIGkwIDo9IDAgdG8gTi0xIGRvCgliZWdpbgoJCXJlYWQoVltpMF0pOwoJZW5kOwoJcmVhZGxuOwogICBpZiBOIG1vZCAyID0gMCB0aGVuIGJlZ2luIGRpbXBhcmk6PU4gZGl2IDI7IGRpbWRpc3Bhcmk6PSBkaW1wYXJpOyBlbmQKICAgICAgICAgICAgICAgICBlbHNlIGJlZ2luIGRpbWRpc3Bhcmk6PU4gZGl2IDIgOyBkaW1wYXJpOj0gZGltZGlzcGFyaSAgKzE7IGVuZDsKICAgU2V0bGVuZ3RoKHBhcmksIGRpbXBhcmkpOwogICBTZXRsZW5ndGgoZGlzcGFyaSwgZGltZGlzcGFyaSk7CiAgIFNldGxlbmd0aChjb250cm9sbG8sIE4pOwogICBmb3IgaTo9MCB0byBOICBkbyBjb250cm9sbG9baV06PTA7IAogICBmb3IgaTo9MCB0byBOIC0xIGRvIGlmIGkgbW9kIDIgPTAgdGhlbiBwYXJpW2kgZGl2IDJdOj1WW2ldIGRpdiAyIDsKICAgZm9yIGk6PTAgdG8gTiAtMSBkbyBpZiBpIG1vZCAyIDw+IDAgdGhlbiBkaXNwYXJpW2kgZGl2IDJdOj0oVltpXSAtMSkgZGl2IDIgOwogICBmb3IgaTo9IDAgdG8gZGltcGFyaS0xIGRvIHdyaXRlKHBhcmlbaV0pOyAgd3JpdGVsbjsKICAgZm9yIGk6PSAwIHRvIGRpbWRpc3BhcmktMSBkbyB3cml0ZShkaXNwYXJpW2ldKTsgd3JpdGVsbjsKICAgZm9yIHogOj0gMCB0byBOLTEgZG8gCiAgIGlmIChWW3pdIG1vZCAyIDw+IHogbW9kIDIpIHRoZW4gYmVnaW4gd3JpdGVsbigtMSkgOyBleGl0OyBlbmQ7CiAgICAgCiAgICBpOj0wOyAgICAgICAgICAKICAgIHdoaWxlIGk8PWRpbXBhcmkgZG8KICAgICAgICAgICAgYmVnaW4KCSAgICAgICBwaWNjb2xpZG9wbzo9MDsgbWFnZ2lvcmlwcmltYTo9MDsgZnVvcmlwb3N0bzo9MDsKCSAgICAgICBtb2RpZmljYSAoY29udHJvbGxvW2ldLE4pOwoJICAgICAgICBwaWNjb2xpZG9wbzo9cGFyaVtpXS1zb21tYShwYXJpW2ldKTsKCSAgICAgICBtYWdnaW9yaXByaW1hOj1pLXBhcmlbaV0rcGljY29saWRvcG87CgkgICAgICAgZnVvcmlwb3N0bzo9bWFnZ2lvcmlwcmltYStwaWNjb2xpZG9wbzsKCSAgICAgICAKCSAgICAgICBpOj1pKzE7CgkgICAgIGVuZDsKCSAgICAgd3JpdGUgKGZ1b3JpcG9zdG8sJyAnKTsKZW5kLgo=