#include <bits/stdc++.h>
using namespace std;
map<int, int> mp;
int main() {
  int n, m;
  cin >> n >> m;
  set<int> s, t;
  int aa;
  for (int i = 0; i < n; i++) {
    cin >> aa;
    mp[aa]++;
    s.insert(aa);
  }
  long long l = 1, c;
  long long ans = 0;
  while (t.size() < m) {
    auto i = s.begin();
    while (i != s.end()) {
      c = 0;
      auto tt = *i;
      if (!mp[*i + l] && t.find(*i + l) == t.end()) {
        c++;
        t.insert(*i + l);
        ans += l;
      }
      if (t.size() >= m) break;
      if (!mp[*i - l] && t.find(*i - l) == t.end()) {
        t.insert(*i - l);
        c++;
        ans += l;
      }
      if (t.size() >= m) break;
      i++;
      if (!c) {
        s.erase(tt);
      }
    }
    l++;
  }
  cout << ans << endl;
  for (auto i = t.begin(); i != t.end(); i++) cout << *i << " ";
}
