program sairsodo;
const MAXN=100000; 
type elenco = array[1..MaXN] of qword;
var N,i, idmediana, idmediana1:qword;
    calcolacosto,calcolacosto1, altezzainiziale, altezzainiziale1:int64;
    costo, costo1:qword;
    H, ricordaltezze: elenco;
Procedure scambia (var a,b: qword);
var x:qword;
begin
   x:=a;
   a:=b;
   b:=x;
end;  
Procedure ordinamento (estremoi,estremos: qword; var v : elenco; ordinato:boolean);
var inf, sup, medio:qword;
    pivot :qword;
begin
    inf:=estremoi;
    sup:=estremos;
    medio:= (estremoi+estremos) div 2;
    pivot:=v[medio];
    repeat
      if (ordinato) then
         begin
            while (v[inf]<pivot) do  inf:=inf+1;
            while (v[sup]>pivot) do  sup:=sup-1;
         end;
      if inf<=sup then
       begin
         scambia(v[inf],v[sup]);
         inf:=inf+1;
         sup:=sup-1;
       end;
    until inf>sup;
    if (estremoi<sup) then ordinamento(estremoi,sup,v,ordinato);
    if (inf<estremos) then ordinamento(inf,estremos,v,ordinato);
end;

begin
	readln(N);
	for i:=1 to N do begin read(H[i]); ricordaltezze[i]:=H[i]; end;readln;
	costo:=0; costo1:=0;
	ordinamento (1,N,H, true);
	for i:=1 to N do write(H[i],' '); writeln;
	if N mod 2 <>0 then 
	                 begin
	                   idmediana:=(N+1) div 2;
	                   altezzainiziale:=H[idmediana]-(idmediana-1);
	                   if altezzainiziale<0 then altezzainiziale:=0;
	                   for i:=1 to N do
	                         begin 
	                             calcolacosto:=(ricordaltezze[i] - (altezzainiziale +i-1));
	                             if calcolacosto<0 then calcolacosto:=-calcolacosto;
	                             costo:= costo + calcolacosto ;
	                         end;
	                    writeln(costo);     
	                end
	              else 
	               begin 
	                idmediana:=((N div 2)+ ((N+1) div 2)) div 2;
	                idmediana1:=idmediana+1;
	                altezzainiziale:=H[idmediana]-(idmediana-1);
	                altezzainiziale1:=H[idmediana1]-(idmediana1-1);
	                if altezzainiziale<0 then altezzainiziale:=0;
	                if altezzainiziale1<0 then altezzainiziale1:=0;
	                for i:=1 to N do
	                         begin 
	                             calcolacosto:=(ricordaltezze[i] - (altezzainiziale +i-1));
	                             if calcolacosto<0 then calcolacosto:=-calcolacosto;
	                             costo:= costo + calcolacosto ;
	                             calcolacosto1:=(ricordaltezze[i] - (altezzainiziale1 +i-1));
	                             if calcolacosto1<0 then calcolacosto1:=-calcolacosto1;
	                             costo1:= costo1 + calcolacosto1 ;
	                         end;
	                if costo<costo1 then writeln(costo)
	                                else writeln(costo1);
	              end; 
 writeln(idmediana1,' ',H[idmediana1],' ', ricordaltezze[idmediana1])	  ;            
	
end.
