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,x,y,ttt:longint;
	s: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; ttt:=(1+n) div 2;
	t1:=a[ttt];
	l:=1; r:=n;
	for i:=1 to n-1 do
	begin
		x:=abs(a[r]-t1);
		y:=abs(t1-a[l]);
		if x>y then 
		begin 
			t2:=a[r];
			dec(r);
			if r=ttt then dec(r);
		end;
		if x<y then 
		begin 
			t2:=a[l];
			inc(l);
			if l=ttt then inc(l);
		end;
		if x=y then
		begin
			x:=abs(a[r-1]-a[l]);
			y:=abs(a[r]-a[l+1]);
			if x>y then 
			begin 
				t2:=a[r];
				dec(r);
				if r=ttt then dec(r);
			end;
			if x<=y then 
			begin 
				t2:=a[l];
				inc(l);
				if l=ttt then inc(l);
			end;
		end;
		s:=s+abs(t1-t2);
		t1:=t2;
	end;
	writeln(s);
end.