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: Accepted)

type 
	arr=array[0..100010] of longint;
var
	s,t:int64;
	i,n:longint;
	a,f1,f2:arr;
procedure qsort(var a:arr; 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(a,l,j);
	if i<r then qsort(a,i,r);
end;
begin
	read(n);
	if n mod 2=0 then
	begin
		f1[1]:=1; f1[n]:=-1;
		f2[1]:=-1; f2[n]:=1;
	end;
	if n mod 2=1 then
	begin
		f1[1]:=1; f1[n]:=1;
		f2[1]:=-1; f2[n]:=-1;
	end;
	for i:=2 to n-1 do
	begin
		if i mod 2=0 then f1[i]:=-2
		else f1[i]:=2;
		if i mod 2=0 then f2[i]:=2
		else f2[i]:=-2;
	end;
	qsort(f1,1,n);
	qsort(f2,1,n);
	s:=0; t:=0;
	for i:=1 to n do read(a[i]);
	qsort(a,1,n);
	for i:=1 to n do
	begin
		s:=s+f1[i]*a[i];
		t:=t+f2[i]*a[i];
	end;
	s:=abs(s); t:=abs(t);
	if s>t then writeln(s)
	else writeln(t);
end.