program paletta;
var N,i0 ,i,z, dimpari, dimdispari:Longint;
V,P,pari, dispari, controllo: array of longint;
numero_ribaltamenti, piccolidopo,maggioriprima,fuoriposto:int64;
ordinabile: boolean;
function SOMMA(X:longint):int64;
begin
SOMMA:=0;
while (X > 0) do
begin
SOMMA:=SOMMA+controllo[X];
X:=X-(X and -X);
end
end;
Procedure modifica(X:longint; D:longint);
begin
while (X <D) do
begin
controllo[X]:=controllo[X]+1;
X:=X+(X and -X);
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);
ordinabile:=true;
for z:=0 to N-1 do if V[z] mod 2 <> z mod 2 then begin ordinabile:=false; numero_ribaltamenti:=-1; end;
if ordinabile=true then begin
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;
i:=1; numero_ribaltamenti:=0;
while i<dimpari do
begin
piccolidopo:=0; maggioriprima:=0; fuoriposto:=0;
modifica (i, dimpari);
piccolidopo:=pari[i]-somma(pari[i]);
maggioriprima:=i-pari[i]+piccolidopo;
fuoriposto:=fuoriposto+maggioriprima+piccolidopo;
write (somma(pari[i]),' ',piccolidopo,' ', maggioriprima,' ',fuoriposto,' ');
writeln;
numero_ribaltamenti:=numero_ribaltamenti+fuoriposto;
writeln(numero_ribaltamenti);
i:=i+1;
end;
for i:=0 to N do controllo[i]:=0;
for i:= 0 to dimdispari-1 do write(dispari[i]); writeln;
i:=1;
while i<dimdispari do
begin
piccolidopo:=0; maggioriprima:=0; fuoriposto:=0;
modifica (i, dimdispari);
piccolidopo:=dispari[i]-somma(dispari[i]);
maggioriprima:=i-dispari[i]+piccolidopo;
fuoriposto:=fuoriposto + maggioriprima+piccolidopo;
write (somma(dispari[i]),' ',piccolidopo,' ', maggioriprima,' ',fuoriposto,' ');
writeln;
numero_ribaltamenti:=numero_ribaltamenti+fuoriposto;
i:=i+1;
end;
end;
writeln(numero_ribaltamenti);
end.
cHJvZ3JhbSBwYWxldHRhOwp2YXIgTixpMCAsaSx6LCBkaW1wYXJpLCBkaW1kaXNwYXJpOkxvbmdpbnQ7CiAgICBWLFAscGFyaSwgZGlzcGFyaSwgY29udHJvbGxvOiBhcnJheSAgb2YgbG9uZ2ludDsKICAgIG51bWVyb19yaWJhbHRhbWVudGksIHBpY2NvbGlkb3BvLG1hZ2dpb3JpcHJpbWEsZnVvcmlwb3N0bzppbnQ2NDsKICAgICBvcmRpbmFiaWxlOiBib29sZWFuOwogICAgIApmdW5jdGlvbiBTT01NQShYOmxvbmdpbnQpOmludDY0OwogYmVnaW4KICAgIFNPTU1BOj0wOwoJd2hpbGUgKFggPiAwKSAJZG8gCgkgICBiZWdpbgoJICAgIAoJICAgIFNPTU1BOj1TT01NQStjb250cm9sbG9bWF07CgkgICAgWDo9WC0oWCBhbmQgLVgpOwoJICAgZW5kCiBlbmQ7ClByb2NlZHVyZSBtb2RpZmljYShYOmxvbmdpbnQ7IEQ6bG9uZ2ludCk7CiAgYmVnaW4KICAgICAJd2hpbGUgKFggPEQpIAlkbyAKICAgICAgICAJYmVnaW4KICAgICAgICAJICAKCSAgICAgICAgICBjb250cm9sbG9bWF06PWNvbnRyb2xsb1tYXSsxOwoJICAgICAgICAgIFg6PVgrKFggYW5kIC1YKTsKCSAgICAgICBlbmQKICBlbmQ7CiAKCiAKCmJlZ2luCiAgICAoKmFzc2lnbihpbnB1dCwgJ2lucHV0LnR4dCcpOyByZXNldChpbnB1dCk7CiAgICBhc3NpZ24ob3V0cHV0LCAnb3V0cHV0LnR4dCcpOyByZXdyaXRlKG91dHB1dCk7KikKICAgICAgICB7IFJlYWRpbmcgaW5wdXQgfQoJcmVhZGxuKCBOKTsKCVNldGxlbmd0aChWLCBOKTsKCWZvciBpMCA6PSAwIHRvIE4tMSBkbwoJYmVnaW4KCQlyZWFkKFZbaTBdKTsKCWVuZDsKCXJlYWRsbjsKCQogICBpZiBOIG1vZCAyID0gMCB0aGVuIGJlZ2luIGRpbXBhcmk6PU4gZGl2IDI7IGRpbWRpc3Bhcmk6PSBkaW1wYXJpOyBlbmQKICAgICAgICAgICAgICAgICBlbHNlIGJlZ2luIGRpbWRpc3Bhcmk6PU4gZGl2IDIgOyBkaW1wYXJpOj0gZGltZGlzcGFyaSsxOyBlbmQ7CiAgIFNldGxlbmd0aChwYXJpLCBkaW1wYXJpKTsKICAgU2V0bGVuZ3RoKGRpc3BhcmksIGRpbWRpc3BhcmkpOwogICBTZXRsZW5ndGgoY29udHJvbGxvLCBOKTsKICAgb3JkaW5hYmlsZTo9dHJ1ZTsKICAgZm9yIHo6PTAgdG8gTi0xIGRvIGlmIFZbel0gbW9kIDIgPD4geiBtb2QgMiB0aGVuIGJlZ2luIG9yZGluYWJpbGU6PWZhbHNlOyBudW1lcm9fcmliYWx0YW1lbnRpOj0tMTsgZW5kOwogICBpZiBvcmRpbmFiaWxlPXRydWUgdGhlbiBiZWdpbiAgIAogICAgICAgICAgICBmb3IgaTo9MCB0byBOICBkbyBjb250cm9sbG9baV06PTA7IAogICAgICAgICAgICBmb3IgaTo9MCB0byBOIC0xIGRvIGlmIGkgbW9kIDIgPTAgdGhlbiBwYXJpW2kgZGl2IDJdOj1WW2ldIGRpdiAyIDsKICAgICAgICAgICAgZm9yIGk6PTAgdG8gTiAtMSBkbyBpZiBpIG1vZCAyIDw+IDAgdGhlbiBkaXNwYXJpW2kgZGl2IDJdOj0oVltpXSAtMSkgZGl2IDIgOwogICAgICAgICAgICBmb3IgaTo9IDAgdG8gZGltcGFyaS0xIGRvIHdyaXRlKHBhcmlbaV0pOyAgd3JpdGVsbjsKICAgICAgICAgICAgaTo9MTsgbnVtZXJvX3JpYmFsdGFtZW50aTo9MDsKICAgICAgICAgICAgd2hpbGUgaTxkaW1wYXJpIGRvCiAgICAgICAgICAgICAgICBiZWdpbgoJICAgICAgICAgICAgICBwaWNjb2xpZG9wbzo9MDsgbWFnZ2lvcmlwcmltYTo9MDsgZnVvcmlwb3N0bzo9MDsKCSAgICAgICAgICAgICAgbW9kaWZpY2EgKGksIGRpbXBhcmkpOwoJICAgICAgICAJICBwaWNjb2xpZG9wbzo9cGFyaVtpXS1zb21tYShwYXJpW2ldKTsgCgkgICAgCQkgIG1hZ2dpb3JpcHJpbWE6PWktcGFyaVtpXStwaWNjb2xpZG9wbzsKCSAgICAJICAgICAgZnVvcmlwb3N0bzo9ZnVvcmlwb3N0byttYWdnaW9yaXByaW1hK3BpY2NvbGlkb3BvOwoJICAgIAkJICB3cml0ZSAoc29tbWEocGFyaVtpXSksJyAnLHBpY2NvbGlkb3BvLCcgJywgbWFnZ2lvcmlwcmltYSwnICcsZnVvcmlwb3N0bywnICcpOwoJICAgIAkJICB3cml0ZWxuOwoJICAgIAkJICBudW1lcm9fcmliYWx0YW1lbnRpOj1udW1lcm9fcmliYWx0YW1lbnRpK2Z1b3JpcG9zdG87CgkgICAgCQkgIHdyaXRlbG4obnVtZXJvX3JpYmFsdGFtZW50aSk7CgkgICAgCQkgIGk6PWkrMTsKCSAgICAJCWVuZDsgCgkgICAgICAgCgkgICAgCWZvciBpOj0wIHRvIE4gIGRvIGNvbnRyb2xsb1tpXTo9MDsgCgkgICAgCWZvciBpOj0gMCB0byBkaW1kaXNwYXJpLTEgZG8gd3JpdGUoZGlzcGFyaVtpXSk7IHdyaXRlbG47CgkgICAgCSBpOj0xOyAKCSAgICAJd2hpbGUgaTxkaW1kaXNwYXJpIGRvCiAgICAgICAgICAgIAliZWdpbgoJICAgIAkJCXBpY2NvbGlkb3BvOj0wOyBtYWdnaW9yaXByaW1hOj0wOyBmdW9yaXBvc3RvOj0wOwoJICAgIAkJCW1vZGlmaWNhIChpLCBkaW1kaXNwYXJpKTsKCSAgICAgICAgCQlwaWNjb2xpZG9wbzo9ZGlzcGFyaVtpXS1zb21tYShkaXNwYXJpW2ldKTsgCgkgICAgCQkJbWFnZ2lvcmlwcmltYTo9aS1kaXNwYXJpW2ldK3BpY2NvbGlkb3BvOwoJICAgIAkJCWZ1b3JpcG9zdG86PWZ1b3JpcG9zdG8gKyBtYWdnaW9yaXByaW1hK3BpY2NvbGlkb3BvOwoJICAgIAkJCXdyaXRlIChzb21tYShkaXNwYXJpW2ldKSwnICcscGljY29saWRvcG8sJyAnLCBtYWdnaW9yaXByaW1hLCcgJyxmdW9yaXBvc3RvLCcgJyk7CgkgICAgCQkJd3JpdGVsbjsKCSAgICAJCQludW1lcm9fcmliYWx0YW1lbnRpOj1udW1lcm9fcmliYWx0YW1lbnRpK2Z1b3JpcG9zdG87CgkgICAgCQkJIGk6PWkrMTsKCSAgICAJCWVuZDsKCSBlbmQ7ICAJCQogIHdyaXRlbG4obnVtZXJvX3JpYmFsdGFtZW50aSk7CmVuZC4K