In Berland recently a new collection of toys went on sale. This collection consists of 10^9 types of toys, numbered with integers from 1 to 10^9. A toy from the new collection of the i-th type costs i bourles.

Tania has managed to collect n different types of toys a_1, a_2, ..., a_{n} from the new collection. Today is Tanya's birthday, and her mother decided to spend no more than m bourles on the gift to the daughter. Tanya will choose several different types of toys from the new collection as a gift. Of course, she does not want to get a type of toy which she already has.

Tanya wants to have as many distinct types of toys in her collection as possible as the result. The new collection is too diverse, and Tanya is too little, so she asks you to help her in this.


-----Input-----

The first line contains two integers n (1 ≤ n ≤ 100 000) and m (1 ≤ m ≤ 10^9) — the number of types of toys that Tanya already has and the number of bourles that her mom is willing to spend on buying new toys.

The next line contains n distinct integers a_1, a_2, ..., a_{n} (1 ≤ a_{i} ≤ 10^9) — the types of toys that Tanya already has.


-----Output-----

In the first line print a single integer k — the number of different types of toys that Tanya should choose so that the number of different types of toys in her collection is maximum possible. Of course, the total cost of the selected toys should not exceed m.

In the second line print k distinct space-separated integers t_1, t_2, ..., t_{k} (1 ≤ t_{i} ≤ 10^9) — the types of toys that Tanya should choose.

If there are multiple answers, you may print any of them. Values of t_{i} can be printed in any order.


-----Examples-----
Input
3 7
1 3 4

Output
2
2 5 

Input
4 14
4 6 12 8

Output
4
7 2 3 1



-----Note-----

In the first sample mom should buy two toys: one toy of the 2-nd type and one toy of the 5-th type. At any other purchase for 7 bourles (assuming that the toys of types 1, 3 and 4 have already been bought), it is impossible to buy two and more toys.

Difficulty: interview

Starter code:

Solutions:
n, m = map(int, input().split())
a = list(map(int, input().split()))
a.sort()
s = 0
count = 1
i = 0
answer = []
while i < len(a) and s <= m:
    if a[i] == count:
        i += 1
        count += 1
    else:
        s += count
        answer.append(count)
        count += 1
if s > m:
    s = s - count + 1
    print(len(answer) - 1)
    for i in range(len(answer) - 1):
        print(answer[i], end = ' ')
elif s == m:
    print(len(answer))
    for i in range(len(answer)):
        print(answer[i], end = ' ')
else:
    while s <= m:
        s += count
        answer.append(count)
        count += 1
    if s == m:
        print(len(answer))
        for i in range(len(answer)):
            print(answer[i], end = ' ')
    else:
        s = s - count + 1
        print(len(answer) - 1)
        for i in range(len(answer) - 1):
            print(answer[i], end = ' ')

def main():
    n, m = map(int, input().split())
    mas = list(map(int, input().split()))
    mas.sort()
    mas.append(int(1e9))
    ans = 0
    res = []
    ind = 0
    for i in range(1, int(1e9)):
        if m < i:
            break
        if mas[ind] == i:
            ind += 1
        else:
            ans += 1
            m -= i
            res.append(i)
    print(ans)
    print(*res)


main()

#!/usr/bin/env python3

read_ints = lambda : list(map(int, input().split()))

def solve(n, m, s):
    ans = []
    i = 1
    while m -i >= 0:
        if i not in s:
            m -= i
            ans.append(i)
        i+=1
    return ans

def __starting_point():
    n, m = read_ints()

    s = set(read_ints())
    ans = solve(n, m, s)
    print(len(ans))
    for a in ans:
        print(a, end=" ")
__starting_point()

a = input().split()
n = int(a[0])
m = int(a[1])
d={}
for i in input().split():
    d[int(i)]=1

ans = []

cnt = 1
while m>0:
    if m-cnt<0:
        break
    if(d.get(cnt)==None):
        ans.append(cnt)
        m-=cnt
    cnt+=1

print(len(ans))
for i in ans:
    print(i,' ',sep='',end='')


n,m = map(int, input().split())
A = list(map(int, input().split()))
A.sort()
A.append(10**9+1)
B = []
answer = 0
cou = 0
per = 1
per2 = True
for i in range(n+1):
    if per2 == False:
        break
    while per != A[i]:
        
        answer+=per
        if answer <= m:
            cou+=1
            B.append(per)
        else:
            print(cou)
            print(' '.join(map(str, B)))
            per2 = False
            break
        per+=1
        
    per+=1

n, m = list(map(int, input().split()))
a = set(map(int, input().split()))
ret = list()
t = 1
while True:
    if m < t:
        break
    if t not in a:
        m -= t
        ret.append(t)
    t += 1
print(len(ret))
if ret:
    print(" ".join(map(str, ret)))


n, m = list(map(int, input().split(' ')))
a = sorted(list(map(int, input().split(' '))))

b = []
j = 0
for i in range(1, 10 ** 9 + 1):
    if i > m:
        break
    if i <= m and (j >= n or i != a[j]):
        b.append(i)
        m -= i
    if j < n and i == a[j]:
        j += 1

print(len(b))
print(' '.join(map(str, b)))


n, m = tuple(map(int, input().split()))
a = set(map(int, input().split()))
ans = []
for x in range(1, 10**9 + 1):
    if m < x:
        break
    if x not in a:
        ans.append(x)
        m -= x
print(len(ans))
print(" ".join(map(str, ans)))


#!/usr/bin/env python3
# -*- coding: utf-8 -*-

import time

(n, m) = (int(i) for i in input().split())
a      = sorted([int(i) for i in input().split()])

start = time.time()


acc = 0
ans = []

j   = 0
sum = 0

for i in range(1, 1000000001):
    if j < n:
        if i == a[j]:
            j +=1
            continue

    if sum+i > m:
        break

    sum += i
    acc += 1
    ans.append(i)

print(acc)
for i in range(acc):
    print(ans[i], end=' ')
print()

#finish = time.time()
#print(finish - start)


3

class StdIO:
	def read_int(self):
		return int(self.read_string())

	def read_ints(self, sep=None):
		return [int(i) for i in self.read_strings(sep)]

	def read_float(self):
		return float(self.read_string())

	def read_floats(self, sep=None):
		return [float(i) for i in self.read_strings(sep)]

	def read_string(self):
		return input()

	def read_strings(self, sep=None):
		return self.read_string().split(sep)

io = StdIO()


def main():
	n, m = io.read_ints()
	a = io.read_ints()
	a.sort()

	has = set()
	for ai in a:
		has.add(ai)

	t = []

	mu = 0
	for i in range(1, a[0]):
		if mu + i > m:
			break

		# print(i, end=' ')
		t.append(i)
		mu += i

	for i in range(a[0], a[-1]):
		if mu + i > m:
			break

		if i not in has:
			# print(i, end=' ')
			t.append(i)
			mu += i

	for i in range(a[-1] + 1, 10**9):
		if mu + i > m:
			break

		# print(i, end=' ')
		t.append(i)
		mu += i

	print(len(t))
	for ti in t:
		print(ti, end=' ')


def __starting_point():
	main()

__starting_point()

n, m = map(int, input().split())
x = set(map(int, input().split()))
answer = []
i = 1
while True:
    if i > m:
        break
    if i in x:
        i += 1
        continue
    else:
        answer.append(i)
        m -= i
        i += 1
print(len(answer))
print(' '.join(map(str, answer)))

n,m=(int(z) for z in input().split())
s=[int(z) for z in input().split()]
t=set(s)
q=0
i=1
res=[]
while q+i<=m and i<1000000000:
	if i not in t:
		q+=i
		res.append(str(i))
	i+=1
print(len(res))
print(' '.join(res))

n, m = list(map(int, input().split()))
has = list(map(int, input().split()))
has.sort()
res = []
uc = 0
for i in range(1, 10 ** 9 + 1):
    if uc < len(has) and has[uc] == i:
        uc += 1
    elif m - i < 0:
        break
    else:
        m -= i
        res.append(i)
print(len(res))
print(*res)



n, m = list(map(int, input().split()))
a = list(map(int, input().split()))
a.sort()
a.append(10**10)
ans = []
cand = 1
for i in range(len(a)):
    while cand < a[i]:
        m -= cand
        if m < 0:
            print(len(ans))
            if len(ans) > 0:
                print(*ans)
            return
        ans.append(cand)
        cand += 1

    cand = a[i] + 1


n, m = (int(x) for x in input().split())
a = [int(x) for x in input().split()]
a.sort()
i = 0
c = 1
ans = []
n_ans = 0
while ((m > 0) and (i < n)) :
  if (c != a[i]) :
    m -= c
    if (m >= 0) : 
      ans.append(c)
      n_ans = n_ans + 1
  if (c == a[i]) :
    i = i + 1
  c = c + 1
  

while (m > 0) :
  m -= c
  if (m >= 0) : 
    ans.append(c)
    n_ans = n_ans + 1
  c = c + 1

print(n_ans)
for i in range(n_ans):
 print(ans[i], ' ', sep = '', end = '')
                  

n,m=[int(x) for x in input().split()]
arr=[int(x) for x in input().split()]
arr.append(1000000002)
arr=sorted(arr)
curr=0
i=1
res=[]
ans=0
while m>=i:
    if i==arr[curr]:
        i+=1
        curr+=1
        continue
    ans+=1
    res.append(i)
    m-=i
    i+=1
print(ans)
for x in res:
    print(x,end=' ')

n,m=map(int,input().split())
inp=list(map(int,input().split()))
inp=set(inp)
count=1
st=[0]*100000
a=0
while((m-count)>=0):
	if(not(count in inp)):
		st[a]=count
		a+=1
		m-=count
		inp.add(count)
	count+=1
print(a)
for i in range(a):
	print(st[i], end=" ")

n,m = (int(i) for i in input().split())
q = set(map(int,input().split()))
s = 0
k = 1
ansv = 0
ans = []
while s < m:
    
    if not k in q:
        if s+k <=m:
            s+=k
            ans+=[k]
            ansv+=1
        else:
            break
    k+=1
    
    
print(ansv)
print(' '.join(list(map(str,ans))))


n, m = map(int, input().split(' '))
a = list(map(int, input().split(' ')))
b = []
a.sort()
li = 0
i = 1
k = 0
la = len(a)

while i <= m:
    if li < la and a[li] < i:
        li += 1
    elif li < la and a[li] == i:
        i += 1
    else:
        m -= i
        k += 1
        b.append(i)
        i += 1

print(k)
for it in b:
    print(it, end=' ')


num,y=map(int,input().split())
inp1=list(map(int,input().split()))
inp1=set(inp1)
count1=1
s=[0]*100000
b=0
while((y-count1)>=0):
	if(not(count1 in inp1)):
		s[b]=count1
		b+=1
		y-=count1
		inp1.add(count1)
	count1+=1
print(b)
for j in range(b):
	print(s[j], end=" ")

n,m=map(int,input().split())
ls=sorted(list(map(int,input().split())))
su,j,arr=0,0,[]
for i in range(1,m+1):
    if j<n and i==ls[j]:
        j+=1
        continue
    su=su+i
    if su>m:
        break
    arr.append(i)

print(len(arr))


for j in arr:
    print(j,end=" ")

def re():
    return [int(x) for x in input().split(' ')]
[n,m] = re()
us = re()
us.sort()

ar = []
k = 0
i = 0
if len(us)==0:
    i =1
    while m > 0:
        if m -i >= 0 and i != us[0]:
            ar.append(str(i))
            m-=i
            i+=1
        else:
            i+=1
if us[0]>1:
    i =1
    while m > 0 and i != us[0]:
        if m -i >=0:
            m-=i
            ar.append(str(i))
            i+=1
        else:
            break
i =0
while i < len(us)-1:
    for j in range(us[i]+1, us[i+1]):
        if m - j >=0:
            ar.append(str(j))
            m-=j
        else:
            i = len(us)
            break
    i+=1
if m >0 and m > us[-1]:
    i = us[-1]+1
    while m >0:
        if m -i >=0:
            m-=i
            ar.append(str(i))
            i+=1
        else:
            break
print(len(ar))
print(" ".join(ar))

string = input().split()
n = int(string[0])
m = int(string[1])
types = list(map(int, input().split()))
types = set(types)


curr = 1
res = []
while m > 0:
    if m - curr < 0:
        break
    if curr not in types:
        m -= curr
        res.append(str(curr))
    curr += 1

print(len(res))
print(' '.join(res))


n,m=map(int,input().split(' '))
a=[int(i) for i in input().split(' ')]
a=set(a)
b=[]
cc=0
lim=int(1e9)
i=1
while i<=m:
    if i not in a:
        cc+=1
        b.append(i)
        m-=i
    i+=1
print(cc)
for i in range(len(b)):
    print(b[i],end=' ')