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