Problem:
Score : 400 points

Problem Statement

You are given N integers; the i-th of them is A_i.
Find the maximum possible sum of the absolute differences between the adjacent elements after arranging these integers in a row in any order you like.

Constraints

2 \leq N \leq 10^5

1 \leq A_i \leq 10^9

All values in input are integers.

Input

Input is given from Standard Input in the following format:

N
A_1
:
A_N

Output

Print the maximum possible sum of the absolute differences between the adjacent elements after arranging the given integers in a row in any order you like.

Sample Input 1

5
6
8
1
2
3

Sample Output 1

21

When the integers are arranged as 3,8,1,6,2, the sum of the absolute differences between the adjacent elements is |3 - 8| + |8 - 1| + |1 - 6| + |6 - 2| = 21. This is the maximum possible sum.

Sample Input 2

6
3
1
4
1
5
9

Sample Output 2

25

Sample Input 3

3
5
5
1

Sample Output 3

8

Solution in Pascal (FPC 2.6.2) (judge verdict: Wrong Answer)

var
	a:array[0..100010] of longint;
	n,i,t1,t2,l,r:longint;
	s,t:int64;
procedure qsort(l,r:longint);
var
	i,j,t,mid:longint;
begin
	i:=l; j:=r; mid:=a[(l+r) div 2];
	repeat
		while a[i]<mid do inc(i);
		while a[j]>mid do dec(j);
		if i<=j then
		begin
			t:=a[i]; a[i]:=a[j]; a[j]:=t;
			inc(i); dec(j);
		end;
	until i>j;
	if l<j then qsort(l,j);
	if i<r then qsort(i,r);
end;
begin
	read(n);
	for i:=1 to n do read(a[i]);
	qsort(1,n);
	s:=0; 
	t1:=a[(1+n) div 2];
	l:=1; r:=n;
	for i:=1 to n-1 do
	begin
		if r=(1+n) div 2 then dec(r);
		if l=(1+n) div 2 then inc(l);
                if l>r then break;
		if abs(a[r]-t1)>abs(t1-a[l]) then 
		begin 
			t2:=a[r];
			dec(r);
			if r=(1+n) div 2 then dec(r);
		end
		else
		begin 
			t2:=a[l];
			inc(l);
			if l=(1+n) div 2 then inc(l);
		end;
		s:=s+abs(t1-t2);
		t1:=t2;
	end;
	t:=0;
	t1:=a[(1+n) div 2+1];
	l:=1; r:=n;
	for i:=1 to n-1 do
	begin
		if r=(1+n) div 2+1 then dec(r);
		if l=(1+n) div 2+1 then inc(l);
                if l>r then break;
		if abs(a[r]-t1)>abs(t1-a[l]) then
		begin
			t2:=a[r];
			dec(r);
			if r=(1+n) div 2+1 then dec(r);
		end
		else
		begin
			t2:=a[l];
			inc(l);
			if l=(1+n) div 2+1 then inc(l);
		end;
		t:=t+abs(t1-t2);
		t1:=t2;
	end;
	if s>t then writeln(s)
	else writeln(t);
end.