#include #include #include #include using namespace std; int main() { int n, m; cin >> n >> m; // 正の近傍 priority_queue, greater> pos_neighbor; // 負の近傍 priority_queue neg_neighbor; for (int i = 0; i < m; i++) { int d; cin >> d; if (d >= 0) pos_neighbor.push(d); else neg_neighbor.push(d); } int pos_end = 0, neg_end = 0, num = 0; while (num < n) { if (neg_neighbor.empty()) { pos_end = pos_neighbor.top(); pos_neighbor.pop(); } else if (pos_neighbor.empty()) { neg_end = neg_neighbor.top(); neg_neighbor.pop(); } else if (abs(neg_neighbor.top() - neg_end) < abs(pos_neighbor.top() - pos_end)) { neg_end = neg_neighbor.top(); neg_neighbor.pop(); } else { pos_end = pos_neighbor.top(); pos_neighbor.pop(); } num++; } int ans = min(abs(neg_end), abs(pos_end)) + abs(neg_end) + abs(pos_end); cout << ans << endl; return 0; }