#include <bits/stdc++.h>
using namespace std;
long long int a[100001];
set<int> s;
vector<int> ans;
int main() {
  long long int n, m, lim;
  long long int p, q;
  cin >> n >> m;
  lim = m;
  for (int i = 0; i < n; i++) {
    cin >> a[i];
    lim += a[i];
  }
  p = 1LL;
  q = 1000000000000000LL;
  while (p <= q) {
    long long int mid = (p + q) / 2;
    if ((mid * (mid + 1)) > (2LL * lim)) {
      q = mid - 1;
    } else if ((mid * (mid + 1)) < (2LL * lim)) {
      p = mid + 1;
    } else {
      q = mid;
      break;
    }
  }
  for (int i = 0; i < n; i++) {
    if (a[i] <= q) {
      s.insert(a[i]);
    }
  }
  lim = 0;
  for (int i = 1; i <= q; i++) {
    if (s.find(i) == s.end()) {
      if (lim + i <= m) {
        ans.push_back(i);
        lim += i;
      } else {
        break;
      }
    }
  }
  cout << ans.size() << endl;
  for (vector<int>::iterator it = ans.begin(); it != ans.end(); it++) {
    cout << *it << " ";
  }
  return 0;
}
