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 C (Clang 3.8.0) (judge verdict: Runtime Error)

#include <stdio.h>
  
int main(void)
{
 
	int i, j, tmp, a = 0, b = 0, c = 2, d = 0, e = 0;
	int number[100];
	
	int total;
	scanf("%d", &total);
	
	b = total / 2;
	a = total % 2;
	d = b % 2;
	e = total - 2;

	for (i=0; i<total; ++i)
		scanf("%d", &number[i]);

	for(i=0; i<total; ++i) {
		for(j=i+1; j<total; ++j) {
			if(number[i] > number[j]) {
				tmp =  number[i];
				number[i] = number[j];
				number[j] = tmp;
			}
		}
	}
	
	if(a == 0 ){
		if(d == 1){
			while(b < total){
				printf("%d\n",number[b]);
				c = c + 2;
				b = b + c;
			}
			
			b = total / 2;
			printf("%d\n",number[0]);
			while(e <  b-1){
				printf("%d\n",number[e]);
				e = e - 2;
			}
		}
	}
	if(a == 1 ){
		if(d == 0){
			while(b < total){
				printf("%d\n",number[b]);
				c = c + 2;
				b = b + c;
			}
			printf("%d\n",number[0]);
			b = total / 2;
			while(e <  b-1){
				printf("%d\n",number[e]);
				e = e - 2;
			}
		}
	}
	return 0;
}