«Next please», — the princess called and cast an estimating glance at the next groom.

The princess intends to choose the most worthy groom, this is, the richest one. Whenever she sees a groom who is more rich than each of the previous ones, she says a measured «Oh...». Whenever the groom is richer than all previous ones added together, she exclaims «Wow!» (no «Oh...» in this case). At the sight of the first groom the princess stays calm and says nothing.

The fortune of each groom is described with an integer between 1 and 50000. You know that during the day the princess saw n grooms, said «Oh...» exactly a times and exclaimed «Wow!» exactly b times. Your task is to output a sequence of n integers t1, t2, ..., tn, where ti describes the fortune of i-th groom. If several sequences are possible, output any of them. If no sequence exists that would satisfy all the requirements, output a single number -1.

Input

The only line of input data contains three integer numbers n, a and b (1 ≤ n ≤ 100, 0 ≤ a, b ≤ 15, n > a + b), separated with single spaces.

Output

Output any sequence of integers t1, t2, ..., tn, where ti (1 ≤ ti ≤ 50000) is the fortune of i-th groom, that satisfies the given constraints. If no sequence exists that would satisfy all the requirements, output a single number -1.

Examples

Input

10 2 3


Output

5 1 3 6 16 35 46 4 200 99

Input

5 0 0


Output

10 10 6 6 5

Note

Let's have a closer look at the answer for the first sample test. 

  * The princess said «Oh...» (highlighted in bold): 5 1 3 6 16 35 46 4 200 99. 
  * The princess exclaimed «Wow!» (highlighted in bold): 5 1 3 6 16 35 46 4 200 99.

Difficulty: MEDIUM_HARD

Solutions:
(n, a, b) = map(int, input().split(' '))
if a + b >= n:
	print(-1)
	exit(0)
if b == 0 and (a == n - 1 and a != 0):
	print(-1)
	exit(0)
ans = [1]
total = 1
if b == 0 and a != 0:
	ans.append(1)
	total += 1
for i in range(b):
	ans.append(total + 1)
	total += ans[-1]
if len(ans) > 0 and ans[-1] > 50000:
	print(-1)
	exit(0)
for i in range(a):
	if len(ans) == 0:
		ans.append(1)
	else:
		ans.append(ans[-1] + 1)
if len(ans) > 0 and ans[-1] > 50000:
	print(-1)
	exit(0)
while len(ans) < n:
	ans.append(1)
for i in ans:
	print(i, end=' ')
print()


(n, a, b) = map(int, input().split())
if a == 0 and b == 0:
	ans = [1] * n
elif b == 0:
	ans = [1] + [i for i in range(1, a + 2)] + [1 for _ in range(a + 2, n)]
else:
	ans = [1] + [2 ** i for i in range(1, b + 1)]
	while len(ans) < a + b + 1:
		ans.append(ans[-1] + 1)
	ans += [1 for _ in range(n - len(ans))]
print(-1 if a and a == n - 1 else ' '.join(map(str, ans)))


import os
import sys
import math
from io import BytesIO, IOBase
from fractions import Fraction
from collections import defaultdict
from itertools import permutations
BUFSIZE = 8192

class FastIO(IOBase):
	newlines = 0

	def __init__(self, file):
		self._fd = file.fileno()
		self.buffer = BytesIO()
		self.writable = 'x' in file.mode or 'r' not in file.mode
		self.write = self.buffer.write if self.writable else None

	def read(self):
		while True:
			b = os.read(self._fd, max(os.fstat(self._fd).st_size, BUFSIZE))
			if not b:
				break
			ptr = self.buffer.tell()
			(self.buffer.seek(0, 2), self.buffer.write(b), self.buffer.seek(ptr))
		self.newlines = 0
		return self.buffer.read()

	def readline(self):
		while self.newlines == 0:
			b = os.read(self._fd, max(os.fstat(self._fd).st_size, BUFSIZE))
			self.newlines = b.count(b'\n') + (not b)
			ptr = self.buffer.tell()
			(self.buffer.seek(0, 2), self.buffer.write(b), self.buffer.seek(ptr))
		self.newlines -= 1
		return self.buffer.readline()

	def flush(self):
		if self.writable:
			os.write(self._fd, self.buffer.getvalue())
			(self.buffer.truncate(0), self.buffer.seek(0))

class IOWrapper(IOBase):

	def __init__(self, file):
		self.buffer = FastIO(file)
		self.flush = self.buffer.flush
		self.writable = self.buffer.writable
		self.write = lambda s: self.buffer.write(s.encode('ascii'))
		self.read = lambda : self.buffer.read().decode('ascii')
		self.readline = lambda : self.buffer.readline().decode('ascii')
(sys.stdin, sys.stdout) = (IOWrapper(sys.stdin), IOWrapper(sys.stdout))
input = lambda : sys.stdin.readline().rstrip('\r\n')
(n, a, b) = map(int, input().split())
if a == 0 and b == 0:
	ans = [1] * n
elif b == 0:
	ans = [1] + [i for i in range(1, a + 2)] + [1 for _ in range(a + 2, n)]
else:
	ans = [1] + [2 ** i for i in range(1, b + 1)]
	while len(ans) < a + b + 1:
		ans.append(ans[-1] + 1)
	ans += [1 for _ in range(n - len(ans))]
print(-1 if a and a == n - 1 else ' '.join(map(str, ans)))


from sys import stdin
(n, a, b) = list(map(int, stdin.readline().split()))
k = n - (a + b)
ans = []
if k <= 0:
	print(-1)
	exit()
ans = [1]
k -= 1
s = sum(ans)
for i in range(b):
	ans.append(s + 1)
	s += ans[-1]
if a > 0:
	if ans[-1] + 1 > s:
		if k == 0:
			print(-1)
			exit()
		else:
			ans.append(1)
			k -= 1
	for i in range(a):
		ans.append(ans[-1] + 1)
for i in range(k):
	ans.append(1)
print(*ans)


(n, o, w) = map(int, input().split())
i = 1
if w == 0 and o > 0:
	if o == n - 1:
		exit(print(-1))
	else:
		i += 1
a = [1] * n
while o + w != 0:
	if w != 0:
		a[i] += sum(a[:i])
		w -= 1
		i += 1
		if n - (o + w) > n:
			i += 1
			continue
		continue
	if o != 0:
		a[i] += a[i - 1]
		o -= 1
		i += 1
		if n - (o + w) > n:
			i += 1
print(*a)


import json
m = input()
m = m.split(' ')
n = json.loads(m[0])
a = json.loads(m[1])
b = json.loads(m[2])
ans = []
s = 1
for i in range(b + 1):
	ans.append(s)
	s = s * 2
s = s // 2 + 1
if b == 0:
	b = 1
	ans.append(1)
	s = 2
for i in range(a):
	ans.append(s)
	s = s + 1
s = 1
for i in range(n - a - b - 1):
	ans.append(s)
if n == a + b:
	ans.clear()
	ans.append(-1)
if n == 1 and a == 0 and (b == 1):
	ans.clear()
	ans.append(1)
for i in range(len(ans) - 1):
	print(ans[i], end=' ')
print(ans[-1])


def check(ans):
	currmax = ans[0]
	p = 0
	oh = 0
	wow = 0
	for x in ans:
		if x > 1:
			if x > p:
				wow += 1
			elif x > currmax:
				oh += 1
		currmax = max(currmax, x)
		p += x
	print('a:{} b:{}'.format(oh, wow))

def main():
	(n, a, b) = readIntArr()
	ok = True
	ans = [1] * n
	if a == 0 and b == 0:
		pass
	elif a > 0 and b == 0:
		for i in range(2, n):
			if a > 0:
				ans[i] = ans[i - 1] + 1
				a -= 1
		if a > 0:
			ok = False
	else:
		for i in range(1, n):
			if b > 0:
				ans[i] = 2 ** i
				b -= 1
			elif a > 0:
				ans[i] = ans[i - 1] + 1
				a -= 1
		if not (a == 0 and b == 0):
			ok = False
	if ok:
		oneLineArrayPrint(ans)
	else:
		print(-1)
	return
import sys
input = lambda : sys.stdin.readline().rstrip('\r\n')

def oneLineArrayPrint(arr):
	print(' '.join([str(x) for x in arr]))

def multiLineArrayPrint(arr):
	print('\n'.join([str(x) for x in arr]))

def multiLineArrayOfArraysPrint(arr):
	print('\n'.join([' '.join([str(x) for x in y]) for y in arr]))

def readIntArr():
	return [int(x) for x in input().split()]

def makeArr(defaultValFactory, dimensionArr):
	dv = defaultValFactory
	da = dimensionArr
	if len(da) == 1:
		return [dv() for _ in range(da[0])]
	else:
		return [makeArr(dv, da[1:]) for _ in range(da[0])]

def queryInteractive(i, j):
	print('? {} {}'.format(i, j))
	sys.stdout.flush()
	return int(input())

def answerInteractive(ans):
	print('! {}'.format(' '.join([str(x) for x in ans])))
	sys.stdout.flush()
inf = float('inf')
MOD = 10 ** 9 + 7
for _abc in range(1):
	main()


(n, a, b) = map(int, input().split())
answer = [1]
if n - len(answer) - a - b < 0:
	print(-1)
	exit(0)
if a != 0 and b == 0:
	answer += [1]
else:
	answer += [2 ** (i + 1) for i in range(b)]
b = 0
if n - len(answer) - a < 0:
	print(-1)
	exit(0)
last_value = answer[-1]
answer += [last_value + i + 1 for i in range(a)]
answer += [1] * (n - len(answer))
print(' '.join((str(x) for x in answer)))


import sys
from functools import lru_cache, cmp_to_key
from heapq import merge, heapify, heappop, heappush
from collections import defaultdict as dd, deque, Counter as C
from itertools import combinations as comb, permutations as perm
from bisect import bisect_left as bl, bisect_right as br, bisect
from time import perf_counter
from fractions import Fraction
import copy
import time
starttime = time.time()
mod = int(pow(10, 9) + 7)
mod2 = 998244353

def data():
	return sys.stdin.readline().strip()

def out(*var, end='\n'):
	sys.stdout.write(' '.join(map(str, var)) + end)

def L():
	return list(sp())

def sl():
	return list(ssp())

def sp():
	return map(int, data().split())

def ssp():
	return map(str, data().split())

def l1d(n, val=0):
	return [val for i in range(n)]

def l2d(n, m, val=0):
	return [l1d(n, val) for j in range(m)]
try:
	sys.stdin = open('input.txt', 'r')
except:
	pass

def pmat(A):
	for ele in A:
		print(*ele, end='\n')
(n, a, b) = map(int, input().split())
ans = [1 for i in range(n)]
p = 2
for i in range(b):
	ans[i + 1] = p
	p *= 2
p //= 2
if b == 0 and a > n - 2 >= 0:
	print(-1)
	exit(0)
if b == 0:
	b = 1
for i in range(a):
	ans[1 + b + i] = p + 1
	p += 1
for i in ans:
	print(i, end=' ')
print()
endtime = time.time()


import sys
(n, a, b) = input().split()
n = int(n)
a = int(a)
b = int(b)
if b == 0 and a > 0:
	if a == n - 1:
		print(-1)
		sys.exit()
	print(1, end=' ')
	n -= 1
for i in range(b + 1):
	print(2 ** i, end=' ')
for i in range(a):
	print(2 ** b + i + 1, end=' ')
for i in range(n - a - b - 1):
	print(1, end=' ')