«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
Tags: Greedy algorithms

Constructive algorithms
Skill types: Greedy algorithms

Starter code:

Solutions:
(n, ohh, wow) = list(map(int, input().split()))
if wow == 0:
	if n >= ohh + 2:
		print(1, end=' ')
		print(1, end=' ')
		for i in range(1, ohh + 1):
			print(i + 1, end=' ')
		for i in range(n - ohh - 2):
			print(ohh + 1, end=' ')
	elif ohh == 0:
		for i in range(n):
			print(1, end=' ')
	else:
		print(-1)
else:
	ans = 1
	print(ans, end=' ')
	for i in range(wow):
		ans *= 2
		print(ans, end=' ')
	for i in range(1, ohh + 1):
		print(ans + i, end=' ')
	for i in range(n - ohh - wow - 1):
		print(1, end=' ')


(n, a, b) = [int(i) for i in input().split()]
(mx, mxs) = (1, 1)
if b == 0:
	if a == 0:
		for i in range(n, 0, -1):
			print(i, end=' ')
		exit()
	elif a + 2 > n:
		print(-1)
		exit()
	else:
		print(1, 1, end=' ')
		for i in range(n - 2):
			if a > 0:
				mx += 1
				print(mx, end=' ')
				a -= 1
			else:
				print(1, end=' ')
		exit()
else:
	print(1, end=' ')
for i in range(n - 1):
	if b > 0:
		print(mxs + 1, end=' ')
		mx = mxs + 1
		mxs *= 2
		mxs += 1
		b -= 1
	elif a > 0:
		print(mx + 1, end=' ')
		mx += 1
		a -= 1
	else:
		print(mx, end=' ')


(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, b, a) = map(int, input().split())
c = n - a - b - 1
if c < 0:
	print('-1')
elif a:
	d = 1 << a
	print('1', ' '.join((str(2 << i) for i in range(a))), ' '.join(map(str, range(d + 1, d + b + 1))), (str(d + b) + ' ') * c)
elif b < n - 1:
	print('1 ' * (c + 1) + ' '.join(map(str, range(2, 2 + b))))
elif b:
	print('-1')
else:
	print('1')


(n, a, b) = map(int, input().split())
if b > 0:
	dp = [1]
	for j in range(b):
		dp.append(dp[-1] * 2)
	for j in range(a):
		dp.append(dp[-1] + 1)
	if dp[-1] > 50000:
		print(-1)
	else:
		n = n - 1
		for j in range(n - a - b):
			dp.append(1)
		print(' '.join(map(str, dp)))
elif a == 0:
	dp = []
	for j in range(n):
		dp.append(1)
	print(' '.join(map(str, dp)))
else:
	dp = []
	p = n - a - b
	for j in range(n - a - b):
		dp.append(1)
	if p <= 1:
		print(-1)
	else:
		for j in range(a):
			dp.append(dp[-1] + 1)
		print(' '.join(map(str, dp)))


(n, a, b) = [int(i) for i in input().split()]
if n == 1:
	print(1)
elif 2 ** b + a > 50000 or (b == 0 and a == n - 1):
	print(-1)
elif b == 0:
	print(1, 1, end=' ')
	last = 1
	for i in range(a):
		last += 1
		print(last)
	for i in range(n - a - 2):
		print(last)
else:
	last = 1
	print(1, end=' ')
	for i in range(b):
		last *= 2
		print(last, end=' ')
	for i in range(a):
		last += 1
		print(last, end=' ')
	for i in range(n - a - b - 1):
		print(last, end=' ')


(n, a, b) = map(int, input().split())
ma = 1
su = 1
k = 0
if b == 0 and a > 0:
	if a == n - 1:
		exit(print(-1))
print(1, end=' ')
if b == 0:
	for i in range(min(n - 1, 1)):
		print(1, end=' ')
		su += 1
		n -= 1
for i in range(b):
	k = su
	print(su + 1, end=' ')
	su += su + 1
	ma = k + 1
for i in range(a):
	ma += 1
	print(ma, end=' ')
for i in range(n - a - b - 1):
	print(ma, end=' ')
	su += ma


l = input().split()
n = int(l[0])
a = int(l[1])
b = int(l[2])
if b == 0:
	if n >= a + 2:
		print(1)
		print(1)
		for i in range(a):
			print(i + 2)
		for i in range(n - a - 2):
			print(a + 1)
	elif a == 0:
		for i in range(n):
			print(1)
	else:
		print(-1)
elif b > 15:
	print(-1)
else:
	ans = 1
	print(ans, end=' ')
	for i in range(b):
		ans = 2 * ans
		print(ans, end=' ')
	for i in range(1, a + 1):
		print(ans + i, end=' ')
	for i in range(n - a - b - 1):
		print(1, end=' ')


(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
from math import *
from collections import *
from fractions import *
from bisect import *
from heapq import *
from io import BytesIO, IOBase

def vsInput():
	sys.stdin = open('input.txt', 'r')
	sys.stdout = open('output.txt', 'w')
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')
ALPHA = 'abcdefghijklmnopqrstuvwxyz'
MOD = 1000000007

def value():
	return tuple(map(int, input().split()))

def array():
	return [int(i) for i in input().split()]

def Int():
	return int(input())

def Str():
	return input()

def arrayS():
	return [i for i in input().split()]
(n, a, b) = value()
ans = [1]
cur = sum(ans)
for i in range(b):
	ans.append(cur + 1)
	cur += cur + 1
for i in range(a + b + 1, n):
	ans.append(1)
ma = max(ans)
for i in range(a):
	ans.append(ma + 1)
	ma += 1
cur = 1
ma = 1
wow = 0
oh = 0
for i in range(1, n):
	if ans[i] > cur:
		wow += 1
	elif ans[i] > ma:
		oh += 1
	ma = max(ma, ans[i])
	cur += ans[i]
if wow == b and oh == a:
	print(*ans)
else:
	print(-1)


(n, a, b) = map(int, input().split())
Ans = [1]
s = 1
if b == 0:
	if a == n - 1 and n != 1:
		print(-1)
	elif n == 1:
		print(1)
	else:
		Ans = [1000, 1000]
		x = 1001
		for i in range(a):
			Ans.append(x)
			x += 1
		while len(Ans) < n:
			Ans.append(1)
		for item in Ans[0:n - 1]:
			print(item, end=' ')
		print(Ans[-1])
else:
	for i in range(b):
		Ans.append(s + 1)
		s += s + 1
	for i in range(a):
		Ans.append(Ans[-1] + 1)
	while len(Ans) < n:
		Ans.append(1)
	done = True
	for i in range(n):
		if Ans[i] > 50000:
			done = False
			break
	if done:
		for item in Ans[0:n - 1]:
			print(item, end=' ')
		print(Ans[-1])
	else:
		print(-1)


import sys
import math
MAXNUM = math.inf
MINNUM = -1 * math.inf
ASCIILOWER = 97
ASCIIUPPER = 65

def getInt():
	return int(sys.stdin.readline().rstrip())

def getInts():
	return map(int, sys.stdin.readline().rstrip().split(' '))

def getString():
	return sys.stdin.readline().rstrip()

def printOutput(ans):
	if ans[-1] > 50000:
		sys.stdout.write('-1')
	else:
		for ele in ans:
			sys.stdout.write(str(ele) + ' ')
	sys.stdout.write('\n')

def solve(n, a, b):
	if a > 0 and b == 0:
		fortunes = [1, 1]
	else:
		fortunes = [1]
	for i in range(b):
		fortunes.append(2 ** len(fortunes))
	for i in range(a):
		fortunes.append(fortunes[-1] + 1)
	while len(fortunes) < n:
		fortunes.append(fortunes[-1])
	if len(fortunes) > n:
		return [2148932]
	return fortunes

def readinput():
	(n, a, b) = getInts()
	printOutput(solve(n, a, b))
readinput()


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)))


c = input().split()
num = int(c[0])
o = int(c[1])
w = int(c[2])
if num == 1:
	if o > 0 or w > 0:
		print(-1)
	else:
		print(1)
elif w == 0 and o >= num - 1:
	print(-1)
elif w == 0 and o > 0:
	k1 = ['2', '1']
	p = 3
	for i in range(o):
		k1.append(str(p))
		p += 1
	if p > 50000:
		print(-1)
	else:
		for i in range(num - 2 - o):
			k1.append(k1[-1])
		print(' '.join(k1))
else:
	k1 = ['1']
	d = 1
	for i in range(w):
		d *= 2
		k1.append(str(d))
	d = d + 1
	for i in range(o):
		k1.append(str(d))
		d += 1
	if d - 1 > 50000:
		print(-1)
	else:
		for i in range(num - o - w - 1):
			k1.append(k1[-1])
		print(' '.join(k1))


def question3():
	(N, ohh, wooh) = map(int, input().split())
	arr = [1]
	if N == 1:
		return [1, [1]]
	remians = N - ohh - wooh
	if wooh == 0 and ohh >= N - 1:
		return [-1, []]
	sum1 = 1
	if wooh == 0:
		arr.append(1)
	for i in range(wooh):
		arr.append(sum1 + 1)
		sum1 += arr[-1]
	for i in range(ohh):
		arr.append(arr[-1] + 1)
	for i in range(remians - 1):
		arr.append(arr[-1])
	if wooh == 0:
		arr.pop()
	if arr[-1] > 50000:
		return [-1, []]
	return [1, arr]
remained_test_cases = 1
while remained_test_cases > 0:
	ans = question3()
	if ans[0] == -1:
		print(-1)
	else:
		print(*ans[1])
	remained_test_cases -= 1


import sys
input = sys.stdin.readline

def inp():
	return int(input())

def inara():
	return list(map(int, input().split()))

def insr():
	s = input()
	return list(s[:len(s) - 1])

def invr():
	return map(int, input().split())
(n, a, b) = invr()
if n == 1:
	print(100)
	exit(0)
if b == 0:
	if a == n - 1:
		print(-1)
		exit(0)
	ans = [0] * n
	ans[0] = 2
	ans[1] = 1
	for i in range(2, n):
		if i < 2 + a:
			ans[i] = i + 1
		else:
			ans[i] = 1
	print(*ans)
	exit(0)
ans = [1]
curr = 1
for i in range(1, b + 1):
	ans.append(curr + 1)
	if ans[i] > 50000:
		print(-1)
		exit(0)
	curr += ans[i]
for i in range(a):
	ans.append(ans[-1] + 1)
while len(ans) < n:
	ans.append(1)
if max(ans) > 50000:
	print(-1)
	exit(0)
print(*ans)


def main():
	(n, a, b) = map(int, input().split())
	if n == 1:
		print(1)
		return
	if b == 0 and a == n - 1:
		print(-1)
		return
	if b == 0:
		ret = [2, 1]
	else:
		ret = [1]
	s = sum(ret)
	for _ in range(b):
		ret.append(s + 1)
		s += ret[-1]
	best = max(ret)
	for _ in range(a):
		ret.append(best + 1)
		best += 1
	if len(ret) > n or any((x > 50000 for x in ret)):
		print(-1)
		return
	while len(ret) < n:
		ret.append(1)
	assert all((1 <= x <= 50000 for x in ret))
	assert len(ret) == n
	print(' '.join((str(x) for x in ret)))
main()


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


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, a, b) = map(int, input().split())
ans = [1]
if n == 1:
	print(*ans)
	exit()
if b == 0 and a == n - 1:
	print(-1)
	exit()
karma = 0
sm = 1
if b == 0:
	sm = 0
	ans.append(1)
	karma = 1
for i in range(karma, n - 1):
	if b > 0:
		ans.append(sm + 1)
		sm += ans[i + 1]
		b -= 1
	elif a > 0:
		ans.append(ans[i] + 1)
		a -= 1
	else:
		ans.append(ans[i])
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])


(n, a, b) = map(int, input().split())
if b > 0:
	c = [1]
	for i in range(1, b + 1):
		c.append(1 << i)
	for i in range(a):
		c.append(c[-1] + 1)
	while len(c) < n:
		c.append(1)
	if max(c) > 50000:
		print(-1)
	else:
		print(*c)
elif n == a + 1:
	if a == 0:
		print(1)
	else:
		print(-1)
else:
	c = [2, 1]
	for i in range(2, n):
		if a > 0:
			c.append(c[-1] + 2)
			a -= 1
		else:
			c.append(c[-1])
	print(*c)


import sys
import math
(n, a, b) = [int(x) for x in sys.stdin.readline().split()]
t = [1]
vsum = 1
if b == 0:
	if n - a == 1 and n > 1:
		print(-1)
		exit()
	vsum = 0
else:
	b -= 1
for i in range(n - 1):
	if b >= 0:
		t.append(vsum + 1)
		vsum += t[i + 1]
		b -= 1
	elif a > 0:
		t.append(t[i] + 1)
		a -= 1
	else:
		t.append(t[i])
print(' '.join([str(x) for x in t]))


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())
if b == 0 and n > 1:
	if a == n - 1:
		print(-1)
		exit()
	print(1, end=' ')
	n -= 1
print(*[1 << i for i in range(b + 1)], end=' ')
print(*[(1 << b) + i + 1 for i in range(a)], end=' ')
print(*[1 for i in range(n - a - b - 1)], end=' ')


(n, a, b) = map(int, input().strip().split())
ans = list()
sum1 = 1
ans.append(1)
res = 1
for i in range(2, n + 1):
	pass
	if b != 0:
		pass
		res = sum1 + 1
		b = b - 1
	elif a > 0 and i > 2:
		res = res + 1
		a = a - 1
	ans.append(res)
	sum1 += res
if a > 0 or b > 0:
	pass
	print(-1)
else:
	print(1, end=' ')
	for x in range(1, n):
		pass
		print(ans[x], end=' ')


(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()


(n, a, b) = map(int, input().split())
x = 1
buf = [1]
sum = 1
t = n - a - b - 1
if a + b == n:
	print(-1)
	exit()
for i in range(a + b):
	if b:
		x = sum + 1
		buf.append(x)
		sum += x
		b -= 1
	else:
		if x + 1 > sum:
			if t:
				buf.append(1)
				t -= 1
				sum += 1
			else:
				print(-1)
				exit()
		x += 1
		sum += x
		buf.append(x)
		a -= 1
for i in range(t):
	buf.append(x)
if buf[-1] > 50000:
	print(-1)
else:
	print(buf[0], end='')
	for i in range(1, len(buf)):
		print('', buf[i], end='')
	print('')


(n, a, b) = map(int, input().split())
if b == 0:
	if a == 0:
		print(*[1] * n)
	elif n == a + 1:
		print(-1)
	else:
		l = [2, 1, 3]
		for _ in range(a - 1):
			l.append(l[-1] + 1)
		print(*l + [1] * (n - len(l)))
else:
	l = [1]
	s = 1
	for _ in range(b):
		l.append(s + 1)
		s += l[-1]
	for _ in range(a):
		l.append(l[-1] + 1)
	print(*l + [1] * (n - len(l)))


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=' ')