package main import ( "bufio" "fmt" "os" "sort" "strconv" ) var sc = bufio.NewScanner(os.Stdin) func Scanner() string { sc.Scan() return sc.Text() } func main() { buf := make([]byte, 0) sc.Buffer(buf, 100000007) sc.Split(bufio.ScanWords) n, _ := strconv.Atoi(Scanner()) a := make([]int, n) for i := 0; i < n; i++ { a[i], _ = strconv.Atoi(Scanner()) } sort.Ints(a) sum := make([]int, n+1) for i := 0; i < n; i++ { sum[i+1] = a[i] sum[i+1] += sum[i] } ans := 0 b := 0 c := 0 d := 0 for i := 1; i < n-1; i++ { b = 0 c = min(i, n-i-1) + 1 for c-b > 1 { d = (b + c) / 2 if a[i-d]+a[n-d]-2*a[i] > 0 { b = d } else { c = d } } ans = max(ans, sum[i]-sum[i-b]+sum[n]-sum[n-b]-a[i]*(2*b)) } fmt.Println(ans) } func min(x int, y int) int { if x >= y { return y } else { return x } } func max(x int, y int) int { if x >= y { return x } else { return y } }