#include <iostream>
#include <algorithm>
#include <list>
using namespace std;
static void HuaWei_OD_test13(void)
{
int silver_cnt;
cin >> silver_cnt;
list<int> silver_left_list;
int tmp;
for (int i = 0; i < silver_cnt; i++)
{
cin >> tmp;
silver_left_list.push_back(tmp);
}
// 第一次排序
silver_left_list.sort();
while (silver_left_list.size() >= 3)
{
// 最重
auto max_weight_pos = silver_left_list.end();
max_weight_pos--;
// 中间重量
auto second_weight_pos = max_weight_pos;
second_weight_pos--;
// 最轻
auto min_weight_pos = second_weight_pos;
min_weight_pos--;
int left = 0;
if (*min_weight_pos == *second_weight_pos &&
*second_weight_pos == *max_weight_pos)
{
// 完全融掉
left = 0;
}
else if (*min_weight_pos == *second_weight_pos &&
*second_weight_pos != *max_weight_pos)
{
// 剩余 z-y
left = *max_weight_pos - *second_weight_pos;
}
else if (*min_weight_pos != *second_weight_pos &&
*second_weight_pos == *max_weight_pos)
{
// 剩余 y-x
left = *second_weight_pos - *min_weight_pos;
}
else if (*min_weight_pos != *second_weight_pos &&
*second_weight_pos != *max_weight_pos)
{
// 剩余 z-y 和 y-x 的差值
left = abs((*max_weight_pos - *second_weight_pos) - (*second_weight_pos - *min_weight_pos));
}
// 去掉原先最终的3块
silver_left_list.erase(min_weight_pos, silver_left_list.end());
// 添加剩余没融化的一块
if (left > 0)
silver_left_list.push_front(left);
// 再次排序
silver_left_list.sort();
}
int output_weight = 0;
// 剩余待融化的银块数目 < 3
// 1) 如果剩余两块,返回较大块重量
if (silver_left_list.size() == 2)
{
output_weight = silver_left_list.back();
}
// 2) 如果剩余1块,返回该块的重量
else if (silver_left_list.size() == 1)
{
output_weight = silver_left_list.back();
}
// 3) 如果没有剩余,返回0
else
{
output_weight = 0;
}
cout << output_weight << endl;
}
int main()
{
HuaWei_OD_test13();
return 0;
}