int main(){
int n;
cin>>n;
vector<int> height;
for (int i = 0; i<n; i++) {
int a;
cin>>a;
height.push_back(a);
}
sort(height.begin(),height.end()); //先对输入的数组排序
int i = 0;
int j = n - 1; //每次取两个插入,一个从小到大取,一个从大到小取
deque<int> re;
re.push_back(height[n - 1]);
j--;
re.push_back(height[0]);
i++;
while (i < j) {
if (re.front() >= re.back()) {
re.push_back(height[j]); //判断大的数是从后面插入还是前面
} else {
re.push_front(height[j]);
}
if (re.front() >= re.back()) {
re.push_front(height[i]); //判断小的数是从后面插入还是前面
} else {
re.push_back(height[i]);
}
i++;
j--;
}
if (i == j) { //如果数组是奇数,还有一个数没插入
if (re.front() >= re.back()) {
re.push_back(height[i]);
} else {
re.push_front(height[i]);
}
}
vector<int> x; //因为不知道怎么用deque直接求差,所以转换成了vector,有点搓,求大家指导
while (!re.empty()) {
x.push_back(re.front());
re.pop_front();
}
int y = 0;
for (int i = 1; i<n; i++) {
y += abs(x[i] - x[i - 1]);
}
cout<<y;
return 0;
}