There are n Christmas trees on an infinite number line. The i-th tree grows at the position x_i. All x_i are guaranteed to be distinct.

Each integer point can be either occupied by the Christmas tree, by the human or not occupied at all. Non-integer points cannot be occupied by anything.

There are m people who want to celebrate Christmas. Let y_1, y_2, ..., y_m be the positions of people (note that all values x_1, x_2, ..., x_n, y_1, y_2, ..., y_m should be distinct and all y_j should be integer). You want to find such an arrangement of people that the value ∑_{j=1}^{m}min_{i=1}^{n}|x_i - y_j| is the minimum possible (in other words, the sum of distances to the nearest Christmas tree for all people should be minimized).

In other words, let d_j be the distance from the j-th human to the nearest Christmas tree (d_j = min_{i=1}^{n} |y_j - x_i|). Then you need to choose such positions y_1, y_2, ..., y_m that ∑_{j=1}^{m} d_j is the minimum possible.

Input

The first line of the input contains two integers n and m (1 ≤ n, m ≤ 2 ⋅ 10^5) — the number of Christmas trees and the number of people.

The second line of the input contains n integers x_1, x_2, ..., x_n (-10^9 ≤ x_i ≤ 10^9), where x_i is the position of the i-th Christmas tree. It is guaranteed that all x_i are distinct.

Output

In the first line print one integer res — the minimum possible value of ∑_{j=1}^{m}min_{i=1}^{n}|x_i - y_j| (in other words, the sum of distances to the nearest Christmas tree for all people).

In the second line print m integers y_1, y_2, ..., y_m (-2 ⋅ 10^9 ≤ y_j ≤ 2 ⋅ 10^9), where y_j is the position of the j-th human. All y_j should be distinct and all values x_1, x_2, ..., x_n, y_1, y_2, ..., y_m should be distinct.

If there are multiple answers, print any of them.

Examples

Input


2 6
1 5


Output


8
-1 2 6 4 0 3 


Input


3 5
0 3 1


Output


7
5 -2 4 -1 2 
'''import sys
from math import ceil
from collections import Counter
input = sys.stdin.readline

N,M = map(int,input().split())
tree = sorted(list(map(int,input().split())))
d = Counter(tree)
empty = tree[-1] - tree[0] + 1 - N
tot = M-empty
left = tot//2
right = ceil(tot/2)
print(tot,left,right)
result = [i for i in range(tree[0]-left,tree[-1]+right+1)]
## getSum
ans = 0
first = tree[0]
sec = tree[1]
idx = 1
for i in range(tree[0]+1,tree[-1]):
    if d[i] != 0:
        idx += 1
        first = sec
        sec = tree[idx]
        continue
    ans += min(i-first,sec-i)
ans += (sum([i for i in range(left+1)]) + sum([i for i in range(right+1)]))
print(ans)
result = list(set(result) - set(tree))
result = sorted(list(map(str,result)))
print(' '.join(result))
'''

n, y = map(int, input().split())
q = list(map(int, input().split()))
v, m, ans, j = [], {}, 0, 0
for i in q: m[i] = 0
while len(v) != y:
    x = q[j]
    if m[x]:
        ans += m[x]
        v.append(x)
    if(x + 1 not in m):
        m[x + 1] = m[x] + 1
        q.append(x + 1)
    if(x - 1 not in m):
        m[x - 1] = m[x] + 1
        q.append(x - 1)
    j += 1
print(ans)
for i in v: print(i, end = ' ')