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 Python (3.4.3) (judge verdict: Accepted)

import os
import os
import sys
from collections import deque

import numpy as np

if os.getenv("LOCAL"):
    sys.stdin = open("_in.txt", "r")

sys.setrecursionlimit(2147483647)
INF = float("inf")
IINF = 10 ** 18
MOD = 10 ** 9 + 7

N = int(sys.stdin.readline())
A = [int(sys.stdin.readline()) for _ in range(N)]


def solve(A):
    if N % 2 == 0:
        ans = [-1] * N
        for i, a in enumerate(A[:N // 2]):
            ans[i * 2 + 1] = a
        for i, a in enumerate(A[N // 2:]):
            ans[i * 2] = a
    else:
        ans = deque()
        que = deque(A)
        while len(que) > 1:
            ans.append(que.popleft())
            ans.append(que.pop())
        ans.appendleft(que.pop())
        ans = list(ans)
    return np.abs(np.diff(ans)).sum()


A.sort()
a = solve(A)
A.reverse()
b = solve(A)
print(max(a, b))

#
# def solve():
#     ans = []
#     for li in itertools.permutations(A):
#         ans.append((np.abs(np.diff(li)).sum(), li))
#     ans.sort()
#
#     print(*ans, sep='\n')
#
#
# solve()