#include <bits/stdc++.h>
using namespace std;
bool bSearch(int* toys, int item, int from, int to) {
  if (from > to)
    return false;
  else {
    int midPoint = (from + to) / 2;
    if (item < toys[midPoint])
      return bSearch(toys, item, from, midPoint - 1);
    else if (item == toys[midPoint])
      return true;
    else
      return bSearch(toys, item, midPoint + 1, to);
  }
}
int main() {
  int n, m;
  scanf("%d %d", &n, &m);
  int toys[n];
  for (int i = 0; i < n; i++) {
    scanf("%d", &toys[i]);
  }
  sort(toys, toys + n);
  long long int counter = 0;
  vector<int> v;
  for (int i = 1; i <= 1000000000 && i <= m && counter < m; i++) {
    if (!bSearch(toys, i, 0, n - 1)) {
      counter += i;
      if (counter <= m) v.push_back(i);
    }
  }
  printf("%d\n", v.size());
  for (int i = 0; i < v.size(); i++) {
    printf("%d ", v[i]);
  }
  printf("\n");
}
