import java.awt.Point;
import java.io.*;
import java.math.BigInteger;
import java.util.*;
import static java.lang.Math.*;

public class C {

        final boolean ONLINE_JUDGE = System.getProperty("ONLINE_JUDGE")!=null;
        BufferedReader in;
        PrintWriter out;
        StringTokenizer tok = new StringTokenizer("");

        void init() throws FileNotFoundException{
                if (ONLINE_JUDGE){
                        in = new BufferedReader(new InputStreamReader(System.in));
                        out = new PrintWriter(System.out);
                }else{
                        in = new BufferedReader(new FileReader("input.txt"));
                        out = new PrintWriter("output.txt");
                }
        }

        String readString() throws IOException{
                while(!tok.hasMoreTokens()){
                        tok = new StringTokenizer(in.readLine());
                }
                return tok.nextToken();
        }

        int readInt() throws IOException{
                return Integer.parseInt(readString());
        }

        long readLong() throws IOException{
                return Long.parseLong(readString());
        }

        double readDouble() throws IOException{
                return Double.parseDouble(readString());
        }

        int[] readArr(int n) throws IOException{
        	int[] res = new int[n];
        	for(int i = 0; i < n; i++){
        		res[i] = readInt();
        	}
        	return res;
        }

        long[] readArrL(int n) throws IOException{
        	long[] res = new long[n];
        	for(int i = 0; i < n; i++){
        		res[i] = readLong();
        	}
        	return res;
        }

        public static void main(String[] args){
                new C().run();
        }

        public void run(){
                try{
                        long t1 = System.currentTimeMillis();
                        init();
                        solve();
                        out.close();
                        long t2 = System.currentTimeMillis();
                        System.err.println("Time = "+(t2-t1));
                }catch (Exception e){
                        e.printStackTrace(System.err);
                        System.exit(-1);
                }
        }

        void solve() throws IOException{
        	int n = readInt();
        	int a = readInt();
        	int b = readInt();
        	if(n == 1){
        		out.println(1);
        		return;
        	}
        	int[] res = new int[n];
        	res[0] = 1;
        	int sum = 1;
        	if(b != 0){
        		for(int i = 1; i <= b; i++){
        			res[i] = sum + 1;
        			sum = 2*sum + 1;
        		}
        		for(int i = b+1; i <= b+a; i++){
        			res[i] = res[i-1]+1;
        		}
        		for(int i = b+a+1; i < n; i++){
        			res[i] = 1;
        		}
        		for(int i = 0; i < n; i++){
        			out.print(res[i]+ " ");
        		}
        		return;
        	}
        	if(a == n-1){
        		out.println("-1");
        		return;
        	}
        	res[1] = 1;
        	for(int i = 2; i <= a+1; i++){
        		res[i] = res[i-1]+1;
        	}
        	for(int i = a + 2; i < n; i++){
        		res[i] = 1;
        	}
        	for(int i = 0; i < n; i++){
    			out.print(res[i]+ " ");
    		}
        }

        void maxHepify(int[] a, int i, int length){
        	int l = (i<<1) + 1;
        	int r = (i<<1) + 2;
        	int largest = i;
        	if(l < length && a[l] > a[largest])
        		largest = l;
        	if(r < length && a[r] > a[largest])
        		largest = r;
        	if(largest != i){
        		a[largest] += a[i];
        		a[i] = a[largest] - a[i];
        		a[largest] -= a[i];
        		maxHepify(a, largest, length);
        	}
        }

        void buildMaxHeap(int[] a){
        	for(int i = a.length/2 - 1; i >= 0; i--){
        		maxHepify(a, i, a.length);
        	}
        }

        void heapSort(int[] a){
        	buildMaxHeap(a);
        	for(int i = a.length - 1; i > 0; i--){
        		a[i] += a[0];
        		a[0] = a[i] - a[0];
        		a[i] -= a[0];
        		maxHepify(a, 0, i);
        	}
        }

        int[] zFunction(char[] s){
        	int[] z = new int[s.length];
        	z[0] = 0;
        	for (int i=1, l=0, r=0; i<s.length; ++i) {
        		if (i <= r)
        			z[i] = min (r-i+1, z[i-l]);
        		while (i+z[i] < s.length && s[z[i]] == s[i+z[i]])
        			++z[i];
        		if (i+z[i]-1 > r){
        			l = i;
        			r = i+z[i]-1;
        		}
        	}
        	return z;
        }

        int[] prefixFunction(char[] s){
        	int[] pr = new int[s.length];
        	for (int i = 1; i< s.length; ++i) {
        		int j = pr[i-1];
        		while (j > 0 && s[i] != s[j])
        			j = pr[j-1];
        		if (s[i] == s[j])  ++j;
        		pr[i] = j;
        	}
        	return pr;
        }

        int ModExp(int a, int n, int mod){
        	int res = 1;
        	while (n!=0)
        		if ((n & 1) != 0) {
        			res = (res*a)%mod;
        			--n;
        		}
        		else {
        			a = (a*a)%mod;
        			n >>= 1;
        		}
        	return res;
        }

        static class Utils {

                private Utils() {}

                public static void mergeSort(int[] a) {
                        mergeSort(a, 0, a.length - 1);
                }

                private static void mergeSort(int[] a, int leftIndex, int rightIndex) {
                        final int MAGIC_VALUE = 50;
                        if (leftIndex < rightIndex) {
                                if (rightIndex - leftIndex <= MAGIC_VALUE) {
                                        insertionSort(a, leftIndex, rightIndex);
                                } else {
                                        int middleIndex = (leftIndex + rightIndex) / 2;
                                        mergeSort(a, leftIndex, middleIndex);
                                        mergeSort(a, middleIndex + 1, rightIndex);
                                        merge(a, leftIndex, middleIndex, rightIndex);
                                }
                        }
                }

                private static void merge(int[] a, int leftIndex, int middleIndex, int rightIndex) {
                        int length1 = middleIndex - leftIndex + 1;
                        int length2 = rightIndex - middleIndex;
                        int[] leftArray = new int[length1];
                        int[] rightArray = new int[length2];
                        System.arraycopy(a, leftIndex, leftArray, 0, length1);
                        System.arraycopy(a, middleIndex + 1, rightArray, 0, length2);
                        for (int k = leftIndex, i = 0, j = 0; k <= rightIndex; k++) {
                                if (i == length1) {
                                        a[k] = rightArray[j++];
                                } else if (j == length2) {
                                        a[k] = leftArray[i++];
                                } else {
                                        a[k] = leftArray[i] <= rightArray[j] ? leftArray[i++] : rightArray[j++];
                                }
                        }
                }

                private static void insertionSort(int[] a, int leftIndex, int rightIndex) {
                        for (int i = leftIndex + 1; i <= rightIndex; i++) {
                                int current = a[i];
                                int j = i - 1;
                                while (j >= leftIndex && a[j] > current) {
                                        a[j + 1] = a[j];
                                        j--;
                                }
                                a[j + 1] = current;
                        }
                }
        }

        boolean isPrime(int a){
        	for(int i = 2; i <= sqrt(a); i++)
        		if(a % i == 0) return false;
        	return true;
        }

        static double distance(long x1, long y1, long x2, long y2){
        	return Math.sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2));
        }

        static long gcd(long a, long b){
        	if(min(a,b) == 0) return max(a,b);
        	return gcd(max(a, b) % min(a,b), min(a,b));
        }

        static long lcm(long a, long b){
        	return a * b /gcd(a, b);
        }
}


import java.util.Scanner;

public class Third
{
    public static void main(String[] args)
    {
        Scanner si = new Scanner(System.in);
        int n = si.nextInt();
        int a = si.nextInt();
        int b = si.nextInt();

        int[] A = new int[n];
        A[0] = 200; int cumSum = A[0];
        for(int i = 1; i <= a; i++)
        {
            A[i] = A[i - 1] + 1;
            cumSum += A[i];
        }
        for(int i = a + 1; i <= a + b; i++)
        {
            A[i] = cumSum + 1;
            cumSum += A[i];
        }
        for(int i = a + b + 1; i < n; i++)
        {
            A[i] = A[0] - i;
        }
        for(int i = 0; i < n; i++) System.out.print(A[i] + " ");
        System.out.println();
    }
}


import java.util.Scanner;

public class Third
{
    public static void main(String[] args)
    {
        Scanner si = new Scanner(System.in);
        int n = si.nextInt();
        int a = si.nextInt();
        int b = si.nextInt();

        if(a != 0 && a == n - 1 && b == 0)
        {
            System.out.println("-1");
            System.exit(0);
        }

        int[] A = new int[n];
        A[0] = 30; int cumSum = A[0];
        int ans = A[0];

        for(int i = 1; i <= b; i++)
        {
            A[i] = cumSum + 1;
            cumSum += A[i];
            ans = Math.max(A[i], ans);
        }

        for(int i = b + 1; i <= a + b; i++)
        {
            A[i] = ans + 1;
            ans = A[i];
        }
        for(int i = a + b + 1; i < n; i++)
        {
            A[i] = A[0];
        }
        if(a!= 0 && b == 0 && n > 1)
        {
            A[1] = A[0];
            for(int i = b + 2; i <= a + b; i++) A[i] = A[i] - 1;
            A[A.length - 1] = ans + 1;
        }

        for(int i = 0; i < n; i++) System.out.print(A[i] + " ");
    }
}


import java.util.Scanner;

public class Third
{
    public static void main(String[] args)
    {
        Scanner si = new Scanner(System.in);
        int n = si.nextInt();
        int a = si.nextInt();
        int b = si.nextInt();

        if(a != 0 && a == n - 1 && b == 0)
        {
            System.out.println("-1");
            System.exit(0);
        }

        int[] A = new int[n];
        A[0] = 1; int cumSum = A[0];
        int ans = A[0];

        for(int i = 1; i <= b; i++)
        {
            A[i] = cumSum + 1;
            cumSum += A[i];
            ans = Math.max(A[i], ans);
        }

        for(int i = b + 1; i <= a + b; i++)
        {
            A[i] = ans + 1;
            ans = A[i];
        }
        for(int i = a + b + 1; i < n; i++)
        {
            A[i] = A[0];
        }
        if(a!= 0 && b == 0 && n > 1)
        {
            A[1] = A[0] - 1;
            A[A.length - 1] = ans + 1;
        }

        for(int i = 0; i < n; i++) System.out.print(A[i] + " ");
    }
}


import java.util.Scanner;

public class Third
{
    public static void main(String[] args)
    {
        Scanner si = new Scanner(System.in);
        int n = si.nextInt();
        int a = si.nextInt();
        int b = si.nextInt();

        if(a != 0 && a == n - 1 && b == 0)
        {
            System.out.println("-1");
            System.exit(0);
        }

        int[] A = new int[n];
        A[0] = 2; int cumSum = A[0];
        int ans = A[0];

        for(int i = 1; i <= b; i++)
        {
            A[i] = cumSum + 1;
            cumSum += A[i];
            ans = Math.max(A[i], ans);
        }

        for(int i = b + 1; i <= a + b; i++)
        {
            A[i] = ans + 1;
            ans = A[i];
        }
        for(int i = a + b + 1; i < n; i++)
        {
            A[i] = A[0];
        }
        if(a!= 0 && b == 0 && n > 1)
        {
            A[1] = A[0];
            for(int i = b + 2; i <= a + b; i++) A[i] = A[i] - 1;
            A[A.length - 1] = ans + 1;
        }

        for(int i = 0; i < n; i++) System.out.print(A[i] + " ");
    }
}


import java.util.Scanner;

public class Third
{
    public static void main(String[] args)
    {
        Scanner si = new Scanner(System.in);
        int n = si.nextInt();
        int a = si.nextInt();
        int b = si.nextInt();

        if(a != 0 && a == n - 1 && b == 0)
        {
            System.out.println("-1");
            System.exit(0);
        }

        int[] A = new int[n];
        A[0] = 200; int cumSum = A[0];
        int ans = A[0];

        for(int i = 1; i <= b; i++)
        {
            A[i] = cumSum + 1;
            cumSum += A[i];
            ans = Math.max(A[i], ans);
        }

        for(int i = b + 1; i <= a + b; i++)
        {
            A[i] = ans + 1;
            ans = A[i];
        }
        for(int i = a + b + 1; i < n; i++)
        {
            A[i] = A[0] - i;
        }
        if(a!= 0 && b == 0 && n > 1)
        {
            A[1] = A[0] - 1;
            A[A.length - 1] = ans + 1;
        }

        for(int i = 0; i < n; i++) System.out.print(A[i] + " ");
    }
}


import java.util.Scanner;

public class Third
{
    public static void main(String[] args)
    {
        Scanner si = new Scanner(System.in);
        int n = si.nextInt();
        int a = si.nextInt();
        int b = si.nextInt();

        if(a == n - 1 && b == 0)
        {
            System.out.println("-1");
            System.exit(0);
        }

        int[] A = new int[n];
        A[0] = 200; int cumSum = A[0];
        int ans = A[0];

        for(int i = 1; i <= b; i++)
        {
            A[i] = cumSum + 1;
            cumSum += A[i];
            ans = Math.max(A[i], ans);
        }

        for(int i = b + 1; i <= a + b; i++)
        {
            A[i] = ans + 1;
            ans = A[i];
        }
        for(int i = a + b + 1; i < n; i++)
        {
            A[i] = A[0] - i;
        }
        if(a!= 0 && b == 0 && n > 1)
        {
            A[1] = A[0] - 1;
            A[A.length - 1] = ans + 1;
        }

        for(int i = 0; i < n; i++) System.out.print(A[i] + " ");
    }
}


import java.util.Scanner;

public class Third
{
    public static void main(String[] args)
    {
        Scanner si = new Scanner(System.in);
        int n = si.nextInt();
        int a = si.nextInt();
        int b = si.nextInt();

        int[] A = new int[n];
        A[0] = 200; int cumSum = A[0];
        int ans = A[0];

        for(int i = 1; i <= b; i++)
        {
            A[i] = cumSum + 1;
            cumSum += A[i];
            ans = Math.max(A[i], ans);
        }

        for(int i = b + 1; i <= a + b; i++)
        {
            A[i] = ans + 1;
            ans = A[i];
        }
        for(int i = a + b + 1; i < n; i++)
        {
            A[i] = A[0] - i;
        }
        for(int i = 0; i < n; i++) System.out.print(A[i] + " ");
    }
}


import java.util.Scanner;

public class Third
{
    public static void main(String[] args)
    {
        Scanner si = new Scanner(System.in);
        int n = si.nextInt();
        int a = si.nextInt();
        int b = si.nextInt();

        if(a != 0 && a == n - 1 && b == 0)
        {
            System.out.println("-1");
            System.exit(0);
        }

        int[] A = new int[n];
        A[0] = n - a - b; int cumSum = A[0];
        int ans = A[0];

        for(int i = 1; i <= b; i++)
        {
            A[i] = cumSum + 1;
            cumSum += A[i];
            ans = Math.max(A[i], ans);
        }

        for(int i = b + 1; i <= a + b; i++)
        {
            A[i] = ans + 1;
            ans = A[i];
        }
        for(int i = a + b + 1; i < n; i++)
        {
            A[i] = A[0] - i;
        }
        if(a!= 0 && b == 0 && n > 1)
        {
            A[1] = A[0] - 1;
            A[A.length - 1] = ans + 1;
        }

        for(int i = 0; i < n; i++) System.out.print(A[i] + " ");
    }
}


import java.util.Scanner;

public class Third
{
    public static void main(String[] args)
    {
        Scanner si = new Scanner(System.in);
        int n = si.nextInt();
        int a = si.nextInt();
        int b = si.nextInt();

        if(a != 0 && a == n - 1 && b == 0)
        {
            System.out.println("-1");
            System.exit(0);
        }

        int[] A = new int[n];
        A[0] = 1; int cumSum = A[0];
        int ans = A[0];

        for(int i = 1; i <= b; i++)
        {
            A[i] = cumSum + 1;
            cumSum += A[i];
            ans = Math.max(A[i], ans);
        }

        for(int i = b + 1; i <= a + b; i++)
        {
            A[i] = ans + 1;
            ans = A[i];
        }
        for(int i = a + b + 1; i < n; i++)
        {
            A[i] = A[0];
        }
        if(a!= 0 && b == 0 && n > 1)
        {
            A[1] = A[0];
            for(int i = b + 1; i <= a + b; i++) A[i] = A[i] - 1;
            A[A.length - 1] = ans + 1;
        }

        for(int i = 0; i < n; i++) System.out.print(A[i] + " ");
    }
}


import java.util.Scanner;

public class Third
{
    public static void main(String[] args)
    {
        Scanner si = new Scanner(System.in);
        int n = si.nextInt();
        int a = si.nextInt();
        int b = si.nextInt();

        if(a != 0 && a == n - 1 && b == 0)
        {
            System.out.println("-1");
            System.exit(0);
        }

        int[] A = new int[n];
        A[0] = 1; int cumSum = A[0];
        int ans = A[0];

        for(int i = 1; i <= b; i++)
        {
            A[i] = cumSum + 1;
            cumSum += A[i];
            ans = Math.max(A[i], ans);
        }

        for(int i = b + 1; i <= a + b; i++)
        {
            A[i] = ans + 1;
            ans = A[i];
        }
        int cnt = 0;
        for(int i = a + b + 1; i < n; i++)
        {
            A[i] = A[0] - (++cnt);
        }
        if(a!= 0 && b == 0 && n > 1)
        {
            A[1] = A[0] - 1;
            A[A.length - 1] = ans + 1;
        }

        for(int i = 0; i < n; i++) System.out.print(A[i] + " ");
    }
}


import java.util.Scanner;

public class Third
{
    public static void main(String[] args)
    {
        Scanner si = new Scanner(System.in);
        int n = si.nextInt();
        int a = si.nextInt();
        int b = si.nextInt();

        if(a != 0 && a == n - 1 && b == 0)
        {
            System.out.println("-1");
            System.exit(0);
        }

        int[] A = new int[n];
        A[0] = 1; int cumSum = A[0];
        int ans = A[0];

        for(int i = 1; i <= b; i++)
        {
            A[i] = cumSum + 1;
            cumSum += A[i];
            ans = Math.max(A[i], ans);
        }

        for(int i = b + 1; i <= a + b; i++)
        {
            A[i] = ans + 1;
            ans = A[i];
        }
        for(int i = a + b + 1; i < n; i++)
        {
            A[i] = A[0];
        }
        if(a!= 0 && b == 0 && n > 1)
        {
            A[1] = A[0];
            A[A.length - 1] = ans + 1;
        }

        for(int i = 0; i < n; i++) System.out.print(A[i] + " ");
    }
}


import java.util.Scanner;

public class Third
{
    public static void main(String[] args)
    {
        Scanner si = new Scanner(System.in);
        int n = si.nextInt();
        int a = si.nextInt();
        int b = si.nextInt();

        if(a != 0 && a == n - 1 && b == 0)
        {
            System.out.println("-1");
            System.exit(0);
        }

        int[] A = new int[n];
        A[0] = 1; int cumSum = A[0];
        int ans = A[0];

        for(int i = 1; i <= b; i++)
        {
            A[i] = cumSum + 1;
            cumSum += A[i];
            ans = Math.max(A[i], ans);
        }

        for(int i = b + 1; i <= a + b; i++)
        {
            A[i] = ans + 1;
            ans = A[i];
        }
        for(int i = a + b + 1; i < n; i++)
        {
            A[i] = A[0];
        }
        if(a!= 0 && b == 0 && n > 1)
        {
            A[1] = A[0];
            for(int i = b + 2; i <= a + b; i++) A[i] = A[i] - 1;
            A[A.length - 1] = ans + 1;
        }

        for(int i = 0; i < n; i++) System.out.print(A[i] + " ");
    }
}


import java.util.Scanner;

public class Third
{
    public static void main(String[] args)
    {
        Scanner si = new Scanner(System.in);
        int n = si.nextInt();
        int a = si.nextInt();
        int b = si.nextInt();

        if(a != 0 && a == n - 1 && b == 0)
        {
            System.out.println("-1");
            System.exit(0);
        }

        int[] A = new int[n];
        A[0] = n - a - b; int cumSum = A[0];
        int ans = A[0];

        for(int i = 1; i <= b; i++)
        {
            A[i] = cumSum + 1;
            cumSum += A[i];
            ans = Math.max(A[i], ans);
        }

        for(int i = b + 1; i <= a + b; i++)
        {
            A[i] = ans + 1;
            ans = A[i];
        }
        int cnt = 0;
        for(int i = a + b + 1; i < n; i++)
        {
            A[i] = A[0] - (++cnt);
        }
        if(a!= 0 && b == 0 && n > 1)
        {
            A[1] = A[0] - 1;
            A[A.length - 1] = ans + 1;
        }

        for(int i = 0; i < n; i++) System.out.print(A[i] + " ");
    }
}


import java.io.*;
import java.util.*;

/**
 * Codeforces Round #105 (Div. 2), C
 * @author Roman Kosenko <madkite@gmail.com>
 */
public class C148C_TersePrincess {
	public static void main(String... args) throws IOException {
		long time = 0;
		if(args.length != 0) {
			System.setIn(new FileInputStream(args[0]));
			time = System.currentTimeMillis();
		} else if(!Boolean.parseBoolean(System.getProperty("ONLINE_JUDGE"))) {
			main("in/C148C.1.txt");
			main("in/C148C.2.txt");
			//main("input.txt");
			return;
		}
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		String[] ss = br.readLine().split(" ");
		int n = Integer.parseInt(ss[0]), a = Integer.parseInt(ss[1]), b = Integer.parseInt(ss[2]);

		int[] result = new int[n];
		Arrays.fill(result, 1);
		int p = b == 0 ? 2 : 1;
		for(int i = 0, s = 1; i < b; i++)
			s += (result[p++] = s + 1);
		for(int i = 0; i < a; i++)
			result[p++] = result[p - 2] + 1;

		if(result[p - 1] > 50000)
			System.out.println("-1");
		else {
			for(int i = 0; i < result.length; i++) {
				if(i != 0)
					System.out.print(' ');
				System.out.print(result[i]);
			}
			System.out.println();
		}

		if(time != 0)
			System.out.println(System.currentTimeMillis() - time);
	}
}


import java.io.*;
import java.util.*;

/**
 * Codeforces Round #105 (Div. 2), C
 * @author Roman Kosenko <madkite@gmail.com>
 */
public class C148C_TersePrincess {
	public static void main(String... args) throws IOException {
		long time = 0;
		if(args.length != 0) {
			System.setIn(new FileInputStream(args[0]));
			time = System.currentTimeMillis();
		} else if(!Boolean.parseBoolean(System.getProperty("ONLINE_JUDGE"))) {
			main("in/C148C.1.txt");
			main("in/C148C.2.txt");
			main("input.txt");
			return;
		}
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		String[] ss = br.readLine().split(" ");
		int n = Integer.parseInt(ss[0]), a = Integer.parseInt(ss[1]), b = Integer.parseInt(ss[2]);

		int[] result = new int[n];
		Arrays.fill(result, 1);
		try {
			int p = b == 0 ? 2 : 1;
			for(int i = 0, s = 1; i < b; i++)
				s += (result[p++] = s + 1);
			for(int i = 0; i < a; i++)
				result[p++] = result[p - 2] + 1;
			if(n > 1 && result[p - 1] > 50000)
				result = null;
		} catch(IndexOutOfBoundsException e) {
			result = null;
		}
		if(result == null)
			System.out.println("-1");
		else {
			for(int i = 0; i < result.length; i++) {
				if(i != 0)
					System.out.print(' ');
				System.out.print(result[i]);
			}
			System.out.println();
		}

		if(time != 0)
			System.out.println(System.currentTimeMillis() - time);
	}
}


import java.io.*;
import java.util.*;

/**
 * Codeforces Round #105 (Div. 2), C
 * @author Roman Kosenko <madkite@gmail.com>
 */
public class C148C_TersePrincess {
	public static void main(String... args) throws IOException {
		long time = 0;
		if(args.length != 0) {
			System.setIn(new FileInputStream(args[0]));
			time = System.currentTimeMillis();
		} else if(!Boolean.parseBoolean(System.getProperty("ONLINE_JUDGE"))) {
			main("in/C148C.1.txt");
			main("in/C148C.2.txt");
			//main("input.txt");
			return;
		}
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		String[] ss = br.readLine().split(" ");
		int n = Integer.parseInt(ss[0]), a = Integer.parseInt(ss[1]), b = Integer.parseInt(ss[2]);

		int[] result = new int[n];
		Arrays.fill(result, 1);
		int p = b == 0 ? 1 : 2;
		for(int i = 0, s = 1; i < b; i++)
			s += (result[p++] = s + 1);
		for(int i = 0; i < a; i++)
			result[p++] = result[p - 2] + 1;

		if(result[p - 1] > 50000)
			System.out.println("-1");
		else {
			for(int i = 0; i < result.length; i++) {
				if(i != 0)
					System.out.print(' ');
				System.out.print(result[i]);
			}
			System.out.println();
		}

		if(time != 0)
			System.out.println(System.currentTimeMillis() - time);
	}
}


import java.io.*;
import java.util.*;

/**
 * Codeforces Round #105 (Div. 2), C
 * @author Roman Kosenko <madkite@gmail.com>
 */
public class C148C_TersePrincess {
	public static void main(String... args) throws IOException {
		long time = 0;
		if(args.length != 0) {
			System.setIn(new FileInputStream(args[0]));
			time = System.currentTimeMillis();
		} else if(!Boolean.parseBoolean(System.getProperty("ONLINE_JUDGE"))) {
			main("in/C148C.1.txt");
			main("in/C148C.2.txt");
			main("input.txt");
			return;
		}
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		String[] ss = br.readLine().split(" ");
		int n = Integer.parseInt(ss[0]), a = Integer.parseInt(ss[1]), b = Integer.parseInt(ss[2]);

		int[] result = new int[n];
		Arrays.fill(result, 1);
		try {
			int p = b == 0 ? 2 : 1;
			for(int i = 0, s = 1; i < b; i++)
				s += (result[p++] = s + 1);
			for(int i = 0; i < a; i++)
				result[p++] = result[p - 2] + 1;
			if(result[p - 1] > 50000)
				result = null;
		} catch(IndexOutOfBoundsException e) {
			result = null;
		}
		if(result == null)
			System.out.println("-1");
		else {
			for(int i = 0; i < result.length; i++) {
				if(i != 0)
					System.out.print(' ');
				System.out.print(result[i]);
			}
			System.out.println();
		}

		if(time != 0)
			System.out.println(System.currentTimeMillis() - time);
	}
}


import java.util.*;

/**
 * User: Aphrodite
 * Date: 12-2-20
 * Time: PM8:10
 */

public class P148C {
  public static void main(String[] args) {
    new P148C().solve();
  }

  public void solve() {
    Scanner in = new Scanner(System.in);
    int n = in.nextInt(), a = in.nextInt(), b = in.nextInt();
    int cur = 1;
    List<Integer> list = new ArrayList<Integer>();
    list.add(cur);
    for (int i = 0; i < a; i++) {
      cur++;
      list.add(cur);
    }
    for (int i = 0; i < b; i++) {
      cur = sum(list) + 1;
      if (cur > 50000) {
        System.out.println(-1);
        System.exit(0);
      }
      list.add(cur);
    }
    for (int i = 0; i < n - a - b - 1; i++) {
      list.add(cur);
    }
    for (Integer integer : list) {
      System.out.print(integer + " ");
    }
  }

  int sum(List<Integer> list) {
    int res = 0;
    for (Integer integer : list) {
      res += integer;
    }
    return res;
  }
}


import java.util.*;

/**
 * User: Aphrodite
 * Date: 12-2-20
 * Time: PM8:10
 */

public class P148C {
  public static void main(String[] args) {
    new P148C().solve();
  }

  public void solve() {
    Scanner in = new Scanner(System.in);
    int n = in.nextInt(), a = in.nextInt(), b = in.nextInt();
    int cur = 1;
    List<Integer> list = new ArrayList<Integer>();
    list.add(cur);

    for (int i = 0; i < b; i++) {
      cur = sum(list) + 1;
      if (cur > 50000) {
        System.out.println(-1);
        System.exit(0);
      }
      list.add(cur);
    }
    for (int i = 0; i < a; i++) {
      cur++;
      list.add(cur);
    }
    int sz = n - list.size();
    for (int i = 0; i < sz; i++) {
      list.add(cur);
    }
//    for (Integer integer : list) {
//      System.out.print(integer + " ");
//    }
    for (int i = 0; i < list.size(); i++) {
      Integer x = list.get(i);
      if (i != 0) {
        System.out.print(" ");
      }
      System.out.print(x);
    }
//    System.out.println();
  }

  int sum(List<Integer> list) {
    int res = 0;
    for (Integer integer : list) {
      res += integer;
    }
    return res;
  }
}


import java.util.*;

/**
 * User: Aphrodite
 * Date: 12-2-20
 * Time: PM8:10
 */

public class P148C {
  public static void main(String[] args) {
    new P148C().solve();
  }

  public void solve() {
    Scanner in = new Scanner(System.in);
    int n = in.nextInt(), a = in.nextInt(), b = in.nextInt();
    int cur = 1;
    List<Integer> list = new ArrayList<Integer>();
    list.add(cur);
    for (int i = 0; i < a; i++) {
      cur++;
      if (cur > sum(list)) {
        b--;
        if (b < 0) {
          System.out.println(-1);
          System.exit(0);
          i--;
        }
      }
      list.add(cur);
    }
    for (int i = 0; i < b; i++) {
      cur = sum(list) + 1;
      if (cur > 50000) {
        System.out.println(-1);
        System.exit(0);
      }
      list.add(cur);
    }
    for (int i = 0; i < n - a - b - 1; i++) {
      list.add(cur);
    }
    for (Integer integer : list) {
      System.out.print(integer + " ");
    }
  }

  int sum(List<Integer> list) {
    int res = 0;
    for (Integer integer : list) {
      res += integer;
    }
    return res;
  }
}


import java.util.*;

/**
 * User: Aphrodite
 * Date: 12-2-20
 * Time: PM8:10
 */

public class P148C {
  public static void main(String[] args) {
    new P148C().solve();
  }

  public void solve() {
    Scanner in = new Scanner(System.in);
    int n = in.nextInt(), a = in.nextInt(), b = in.nextInt();
    int cur = 1;
    List<Integer> list = new ArrayList<Integer>();
    list.add(cur);

    for (int i = 0; i < b; i++) {
      cur = sum(list) + 1;
      if (cur > 50000) {
        System.out.println(-1);
        System.exit(0);
      }
      list.add(cur);
    }
    int sz = n - list.size() - a;
    for (int i = 0; i < sz; i++) {
      list.add(cur);
    }
    for (int i = 0; i < a; i++) {
      cur++;
      if (cur > sum(list)) {
        System.out.println(-1);
        System.exit(0);
      }
      list.add(cur);
    }

//    for (Integer integer : list) {
//      System.out.print(integer + " ");
//    }
    for (int i = 0; i < list.size(); i++) {
      Integer x = list.get(i);
      if (i != 0) {
        System.out.print(" ");
      }
      System.out.print(x);
    }
//    System.out.println();
  }

  int sum(List<Integer> list) {
    int res = 0;
    for (Integer integer : list) {
      res += integer;
    }
    return res;
  }
}


import java.util.*;

/**
 * User: Aphrodite
 * Date: 12-2-20
 * Time: PM8:10
 */

public class P148C {
  public static void main(String[] args) {
    new P148C().solve();
  }

  public void solve() {
    Scanner in = new Scanner(System.in);
    int n = in.nextInt(), a = in.nextInt(), b = in.nextInt();
    int cur = 1;
    List<Integer> list = new ArrayList<Integer>();
    list.add(cur);

    for (int i = 0; i < b; i++) {
      cur = sum(list) + 1;
      if (cur > 50000) {
        System.out.println(-1);
        System.exit(0);
      }
      list.add(cur);
    }
    for (int i = 0; i < a; i++) {
      cur++;
      list.add(cur);
    }
    for (int i = 0; i < n - list.size(); i++) {
      list.add(cur);
    }
//    for (Integer integer : list) {
//      System.out.print(integer + " ");
//    }
    for (int i = 0; i < list.size(); i++) {
      Integer x = list.get(i);
      if (i != 0) {
        System.out.print(" ");
      }
      System.out.print(x);
    }
//    System.out.println();
  }

  int sum(List<Integer> list) {
    int res = 0;
    for (Integer integer : list) {
      res += integer;
    }
    return res;
  }
}


import java.util.*;

/**
 * User: Aphrodite
 * Date: 12-2-20
 * Time: PM8:10
 */

public class P148C {
  public static void main(String[] args) {
    new P148C().solve();
  }

  public void solve() {
    Scanner in = new Scanner(System.in);
    int n = in.nextInt(), a = in.nextInt(), b = in.nextInt();
    int cur = 1;
    List<Integer> list = new ArrayList<Integer>();
    list.add(cur);

    for (int i = 0; i < b; i++) {
      cur = sum(list) + 1;
      if (cur > 50000) {
        System.out.println(-1);
        System.exit(0);
      }
      list.add(cur);
    }
    for (int i = 0; i < a; i++) {
      cur++;
      if (cur > sum(list)) {
        System.out.println(-1);
        System.exit(0);
      }
      list.add(cur);
    }
    int sz = n - list.size();
    for (int i = 0; i < sz; i++) {
      list.add(cur);
    }
//    for (Integer integer : list) {
//      System.out.print(integer + " ");
//    }
    for (int i = 0; i < list.size(); i++) {
      Integer x = list.get(i);
      if (i != 0) {
        System.out.print(" ");
      }
      System.out.print(x);
    }
//    System.out.println();
  }

  int sum(List<Integer> list) {
    int res = 0;
    for (Integer integer : list) {
      res += integer;
    }
    return res;
  }
}


import java.util.*;

/**
 * User: Aphrodite
 * Date: 12-2-20
 * Time: PM8:10
 */

public class P148C {
  public static void main(String[] args) {
    new P148C().solve();
  }

  public void solve() {
    Scanner in = new Scanner(System.in);
    int n = in.nextInt(), a = in.nextInt(), b = in.nextInt();
    int cur = 1;
    List<Integer> list = new ArrayList<Integer>();
    list.add(cur);
    for (int i = 0; i < a; i++) {
      cur++;
      if (cur > sum(list)) {
        b--;
        if (b < 0) {
          System.out.println(-1);
          System.exit(0);
        }
        i--;
      }
      list.add(cur);
    }
    for (int i = 0; i < b; i++) {
      cur = sum(list) + 1;
      if (cur > 50000) {
        System.out.println(-1);
        System.exit(0);
      }
      list.add(cur);
    }
    for (int i = 0; i < n - a - b - 1; i++) {
      list.add(cur);
    }
//    for (Integer integer : list) {
//      System.out.print(integer + " ");
//    }
    for (int i = 0; i < list.size(); i++) {
      Integer x = list.get(i);
      if (i != 0) {
        System.out.print(" ");
      }
      System.out.print(x);
    }
    System.out.println();
  }

  int sum(List<Integer> list) {
    int res = 0;
    for (Integer integer : list) {
      res += integer;
    }
    return res;
  }
}


import java.util.*;

/**
 * User: Aphrodite
 * Date: 12-2-20
 * Time: PM8:10
 */

public class P148C {
  public static void main(String[] args) {
    new P148C().solve();
  }

  public void solve() {
    Scanner in = new Scanner(System.in);
    int n = in.nextInt(), a = in.nextInt(), b = in.nextInt();
    int cur = 1;
    List<Integer> list = new ArrayList<Integer>();
    list.add(cur);
    for (int i = 0; i < a; i++) {
      cur++;
      if (cur > sum(list)) {
        b--;
        if (b < 0) {
          System.out.println(-1);
          System.exit(0);
        }
        i--;
      }
      list.add(cur);
    }
    for (int i = 0; i < b; i++) {
      cur = sum(list) + 1;
      if (cur > 50000) {
        System.out.println(-1);
        System.exit(0);
      }
      list.add(cur);
    }
    for (int i = 0; i < n - a - b - 1; i++) {
      list.add(cur);
    }
    for (Integer integer : list) {
      System.out.print(integer + " ");
    }
  }

  int sum(List<Integer> list) {
    int res = 0;
    for (Integer integer : list) {
      res += integer;
    }
    return res;
  }
}


import java.util.*;

/**
 * User: Aphrodite
 * Date: 12-2-20
 * Time: PM8:10
 */

public class P148C {
  public static void main(String[] args) {
    new P148C().solve();
  }

  public void solve() {
    Scanner in = new Scanner(System.in);
    int n = in.nextInt(), a = in.nextInt(), b = in.nextInt();
    int cur = 1;
    List<Integer> list = new ArrayList<Integer>();
    list.add(cur);
    for (int i = 0; i < a; i++) {
      cur++;
      if (cur > sum(list)) {
        b--;
        if (b < 0) {
          System.out.println(-1);
          System.exit(0);
        }
      }
      list.add(cur);
    }
    for (int i = 0; i < b; i++) {
      cur = sum(list) + 1;
      if (cur > 50000) {
        System.out.println(-1);
        System.exit(0);
      }
      list.add(cur);
    }
    for (int i = 0; i < n - a - b - 1; i++) {
      list.add(cur);
    }
    for (Integer integer : list) {
      System.out.print(integer + " ");
    }
  }

  int sum(List<Integer> list) {
    int res = 0;
    for (Integer integer : list) {
      res += integer;
    }
    return res;
  }
}


import java.util.*;

/**
 * Created by IntelliJ IDEA.
 * User: piyushd
 * Date: 3/26/11
 * Time: 10:53 PM
 * To change this template use File | Settings | File Templates.
 */
public class TaskC {

    void run() {
        int n = nextInt(), a = nextInt(), b = nextInt();

        long[] p = new long[n];
        Arrays.fill(p, 1);
        int sum = 1;
        for(int i = 1; i <= b; i++) {
            p[i] = sum + 1;
            sum += p[i];
        }
        for(int i = b + 1; i <= a + b; i++) {
            p[i] = p[i - 1] + 1;
        }

        boolean ok = true;
        for(int i = 0; i < n && ok; i++) if(p[i] > 50000) ok = false;

        if(!ok) {
            System.out.println(-1);
            return;
        }

        for(int i = 0; i < n; i++) {
            if(i > 0) System.out.print(" ");
            System.out.print(p[i]);
        }
        System.out.println();
    }

    int nextInt(){
        try{
            int c = System.in.read();
            if(c == -1) return c;
            while(c != '-' && (c < '0' || '9' < c)){
                c = System.in.read();
                if(c == -1) return c;
            }
            if(c == '-') return -nextInt();
            int res = 0;
            do{
                res *= 10;
                res += c - '0';
                c = System.in.read();
            }while('0' <= c && c <= '9');
            return res;
        }catch(Exception e){
            return -1;
        }
    }

    long nextLong(){
        try{
            int c = System.in.read();
            if(c == -1) return -1;
            while(c != '-' && (c < '0' || '9' < c)){
                c = System.in.read();
                if(c == -1) return -1;
            }
            if(c == '-') return -nextLong();
            long res = 0;
            do{
                res *= 10;
                res += c-'0';
                c = System.in.read();
            }while('0' <= c && c <= '9');
            return res;
        }catch(Exception e){
            return -1;
        }
    }

    double nextDouble(){
        return Double.parseDouble(next());
    }

    String next(){
        try{
            StringBuilder res = new StringBuilder("");
            int c = System.in.read();
            while(Character.isWhitespace(c))
                c = System.in.read();
            do{
                res.append((char)c);
            }while(!Character.isWhitespace(c=System.in.read()));
            return res.toString();
        }catch(Exception e){
            return null;
        }
    }

    String nextLine(){
        try{
            StringBuilder res = new StringBuilder("");
            int c = System.in.read();
            while(c == '\r' || c == '\n')
                c = System.in.read();
            do{
                res.append((char)c);
                c = System.in.read();
            }while(c != '\r' && c != '\n');
            return res.toString();
        }catch(Exception e){
            return null;
        }
    }

    public static void main(String[] args){
        new TaskC().run();
    }
}


import java.util.*;

/**
 * Created by IntelliJ IDEA.
 * User: piyushd
 * Date: 3/26/11
 * Time: 10:53 PM
 * To change this template use File | Settings | File Templates.
 */
public class TaskC {

    void run() {
        int n = nextInt(), a = nextInt(), b = nextInt();

        long[] p = new long[n];
        Arrays.fill(p, 1);
        int sum = 1;
        for(int i = 1; i <= a; i++) {
            p[i] = p[i - 1] + 1;
            sum += p[i];
        }
        for(int i = a + 1; i <= a + b; i++) {
            p[i] = sum + 1;
            sum += p[i];
        }

        boolean ok = true;
        for(int i = 0; i < n && ok; i++) if(p[i] > 50000) ok = false;

        if(!ok) {
            System.out.println(-1);
            return;
        }

        for(int i = 0; i < n; i++) {
            if(i > 0) System.out.print(" ");
            System.out.print(p[i]);
        }
        System.out.println();
    }

    int nextInt(){
        try{
            int c = System.in.read();
            if(c == -1) return c;
            while(c != '-' && (c < '0' || '9' < c)){
                c = System.in.read();
                if(c == -1) return c;
            }
            if(c == '-') return -nextInt();
            int res = 0;
            do{
                res *= 10;
                res += c - '0';
                c = System.in.read();
            }while('0' <= c && c <= '9');
            return res;
        }catch(Exception e){
            return -1;
        }
    }

    long nextLong(){
        try{
            int c = System.in.read();
            if(c == -1) return -1;
            while(c != '-' && (c < '0' || '9' < c)){
                c = System.in.read();
                if(c == -1) return -1;
            }
            if(c == '-') return -nextLong();
            long res = 0;
            do{
                res *= 10;
                res += c-'0';
                c = System.in.read();
            }while('0' <= c && c <= '9');
            return res;
        }catch(Exception e){
            return -1;
        }
    }

    double nextDouble(){
        return Double.parseDouble(next());
    }

    String next(){
        try{
            StringBuilder res = new StringBuilder("");
            int c = System.in.read();
            while(Character.isWhitespace(c))
                c = System.in.read();
            do{
                res.append((char)c);
            }while(!Character.isWhitespace(c=System.in.read()));
            return res.toString();
        }catch(Exception e){
            return null;
        }
    }

    String nextLine(){
        try{
            StringBuilder res = new StringBuilder("");
            int c = System.in.read();
            while(c == '\r' || c == '\n')
                c = System.in.read();
            do{
                res.append((char)c);
                c = System.in.read();
            }while(c != '\r' && c != '\n');
            return res.toString();
        }catch(Exception e){
            return null;
        }
    }

    public static void main(String[] args){
        new TaskC().run();
    }
}


import java.util.*;

/**
 * Created by IntelliJ IDEA.
 * User: piyushd
 * Date: 3/26/11
 * Time: 10:53 PM
 * To change this template use File | Settings | File Templates.
 */
public class TaskC {

    void run() {
        int n = nextInt(), a = nextInt(), b = nextInt();

        long[] p = new long[n];
        Arrays.fill(p, 1);
        int sum = 1;

        for(int i = 1; i <= b; i++) {
            p[i] = sum + 1;
            sum += p[i];
        }

        for(int i = b + 1; i <= a + b; i++) {
            p[i] = p[i - 1] + 1;
        }

        for(int i = 0; i < n; i++) {
            if(i > 0) System.out.print(" ");
            System.out.print(p[i]);
        }
        System.out.println();
    }

    int nextInt(){
        try{
            int c = System.in.read();
            if(c == -1) return c;
            while(c != '-' && (c < '0' || '9' < c)){
                c = System.in.read();
                if(c == -1) return c;
            }
            if(c == '-') return -nextInt();
            int res = 0;
            do{
                res *= 10;
                res += c - '0';
                c = System.in.read();
            }while('0' <= c && c <= '9');
            return res;
        }catch(Exception e){
            return -1;
        }
    }

    long nextLong(){
        try{
            int c = System.in.read();
            if(c == -1) return -1;
            while(c != '-' && (c < '0' || '9' < c)){
                c = System.in.read();
                if(c == -1) return -1;
            }
            if(c == '-') return -nextLong();
            long res = 0;
            do{
                res *= 10;
                res += c-'0';
                c = System.in.read();
            }while('0' <= c && c <= '9');
            return res;
        }catch(Exception e){
            return -1;
        }
    }

    double nextDouble(){
        return Double.parseDouble(next());
    }

    String next(){
        try{
            StringBuilder res = new StringBuilder("");
            int c = System.in.read();
            while(Character.isWhitespace(c))
                c = System.in.read();
            do{
                res.append((char)c);
            }while(!Character.isWhitespace(c=System.in.read()));
            return res.toString();
        }catch(Exception e){
            return null;
        }
    }

    String nextLine(){
        try{
            StringBuilder res = new StringBuilder("");
            int c = System.in.read();
            while(c == '\r' || c == '\n')
                c = System.in.read();
            do{
                res.append((char)c);
                c = System.in.read();
            }while(c != '\r' && c != '\n');
            return res.toString();
        }catch(Exception e){
            return null;
        }
    }

    public static void main(String[] args){
        new TaskC().run();
    }
}


import java.util.*;

/**
 * Created by IntelliJ IDEA.
 * User: piyushd
 * Date: 3/26/11
 * Time: 10:53 PM
 * To change this template use File | Settings | File Templates.
 */
public class TaskC {

    void run() {
        int n = nextInt(), a = nextInt(), b = nextInt();

        long[] p = new long[n];
        Arrays.fill(p, 1);
        int sum = 1;
        boolean ok = true;
        for(int i = 1; i <= b && ok; i++) {
            p[i] = sum + 1;
            if(p[i] > 50000) ok = false;
            sum += p[i];
        }
        for(int i = b + 1; i <= a + b && ok; i++) {
            p[i] = p[i - 1] + 1;
            if(p[i] > 50000) ok = false;
        }

        for(int i = 0; i < n && ok; i++) if(p[i] > 50000) ok = false;

        if(!ok) {
            System.out.println(-1);
            return;
        }

        for(int i = 0; i < n; i++) {
            if(i > 0) System.out.print(" ");
            System.out.print(p[i]);
        }
        System.out.println();
    }

    int nextInt(){
        try{
            int c = System.in.read();
            if(c == -1) return c;
            while(c != '-' && (c < '0' || '9' < c)){
                c = System.in.read();
                if(c == -1) return c;
            }
            if(c == '-') return -nextInt();
            int res = 0;
            do{
                res *= 10;
                res += c - '0';
                c = System.in.read();
            }while('0' <= c && c <= '9');
            return res;
        }catch(Exception e){
            return -1;
        }
    }

    long nextLong(){
        try{
            int c = System.in.read();
            if(c == -1) return -1;
            while(c != '-' && (c < '0' || '9' < c)){
                c = System.in.read();
                if(c == -1) return -1;
            }
            if(c == '-') return -nextLong();
            long res = 0;
            do{
                res *= 10;
                res += c-'0';
                c = System.in.read();
            }while('0' <= c && c <= '9');
            return res;
        }catch(Exception e){
            return -1;
        }
    }

    double nextDouble(){
        return Double.parseDouble(next());
    }

    String next(){
        try{
            StringBuilder res = new StringBuilder("");
            int c = System.in.read();
            while(Character.isWhitespace(c))
                c = System.in.read();
            do{
                res.append((char)c);
            }while(!Character.isWhitespace(c=System.in.read()));
            return res.toString();
        }catch(Exception e){
            return null;
        }
    }

    String nextLine(){
        try{
            StringBuilder res = new StringBuilder("");
            int c = System.in.read();
            while(c == '\r' || c == '\n')
                c = System.in.read();
            do{
                res.append((char)c);
                c = System.in.read();
            }while(c != '\r' && c != '\n');
            return res.toString();
        }catch(Exception e){
            return null;
        }
    }

    public static void main(String[] args){
        new TaskC().run();
    }
}


import sun.security.krb5.internal.PAEncTSEnc;

import java.util.*;

/**
 * Created by IntelliJ IDEA.
 * User: piyushd
 * Date: 3/26/11
 * Time: 10:53 PM
 * To change this template use File | Settings | File Templates.
 */
public class TaskC {

    void run() {
        int n = nextInt(), a = nextInt(), b = nextInt();

        long[] p = new long[n];
        Arrays.fill(p, 1);
        int sum = 1;
        for(int i = 1; i <= a; i++) {
            p[i] = p[i - 1] + 1;
            sum += p[i];
        }
        for(int i = a + 1; i <= a + b; i++) {
            p[i] = sum + 1;
            sum += p[i];
        }

        boolean ok = true;
        for(int i = 0; i < n && ok; i++) if(p[i] > 50000) ok = false;

        if(!ok) {
            System.out.println(-1);
            return;
        }

        for(int i = 0; i < n; i++) System.out.print(p[i] + " ");
        System.out.println();
    }

    int nextInt(){
        try{
            int c = System.in.read();
            if(c == -1) return c;
            while(c != '-' && (c < '0' || '9' < c)){
                c = System.in.read();
                if(c == -1) return c;
            }
            if(c == '-') return -nextInt();
            int res = 0;
            do{
                res *= 10;
                res += c - '0';
                c = System.in.read();
            }while('0' <= c && c <= '9');
            return res;
        }catch(Exception e){
            return -1;
        }
    }

    long nextLong(){
        try{
            int c = System.in.read();
            if(c == -1) return -1;
            while(c != '-' && (c < '0' || '9' < c)){
                c = System.in.read();
                if(c == -1) return -1;
            }
            if(c == '-') return -nextLong();
            long res = 0;
            do{
                res *= 10;
                res += c-'0';
                c = System.in.read();
            }while('0' <= c && c <= '9');
            return res;
        }catch(Exception e){
            return -1;
        }
    }

    double nextDouble(){
        return Double.parseDouble(next());
    }

    String next(){
        try{
            StringBuilder res = new StringBuilder("");
            int c = System.in.read();
            while(Character.isWhitespace(c))
                c = System.in.read();
            do{
                res.append((char)c);
            }while(!Character.isWhitespace(c=System.in.read()));
            return res.toString();
        }catch(Exception e){
            return null;
        }
    }

    String nextLine(){
        try{
            StringBuilder res = new StringBuilder("");
            int c = System.in.read();
            while(c == '\r' || c == '\n')
                c = System.in.read();
            do{
                res.append((char)c);
                c = System.in.read();
            }while(c != '\r' && c != '\n');
            return res.toString();
        }catch(Exception e){
            return null;
        }
    }

    public static void main(String[] args){
        new TaskC().run();
    }
}


import java.util.*;

/**
 * Created by IntelliJ IDEA.
 * User: piyushd
 * Date: 3/26/11
 * Time: 10:53 PM
 * To change this template use File | Settings | File Templates.
 */
public class TaskC {

    void run() {
        int n = nextInt(), a = nextInt(), b = nextInt();

        long[] p = new long[n];
        Arrays.fill(p, 1);
        int sum = 1;

        for(int i = 1; i <= b; i++) {
            p[i] = sum + 1;
            sum += p[i];
        }

        if(b == 0) {
            b++;
            if(a + b >= n) {
                System.out.println(-1);
                return;
            }
        }

        for(int i = b + 1; i <= a + b; i++) {
            p[i] = p[i - 1] + 1;
        }

        for(int i = 0; i < n; i++) {
            if(i > 0) System.out.print(" ");
            System.out.print(p[i]);
        }
        System.out.println();
    }

    int nextInt(){
        try{
            int c = System.in.read();
            if(c == -1) return c;
            while(c != '-' && (c < '0' || '9' < c)){
                c = System.in.read();
                if(c == -1) return c;
            }
            if(c == '-') return -nextInt();
            int res = 0;
            do{
                res *= 10;
                res += c - '0';
                c = System.in.read();
            }while('0' <= c && c <= '9');
            return res;
        }catch(Exception e){
            return -1;
        }
    }

    long nextLong(){
        try{
            int c = System.in.read();
            if(c == -1) return -1;
            while(c != '-' && (c < '0' || '9' < c)){
                c = System.in.read();
                if(c == -1) return -1;
            }
            if(c == '-') return -nextLong();
            long res = 0;
            do{
                res *= 10;
                res += c-'0';
                c = System.in.read();
            }while('0' <= c && c <= '9');
            return res;
        }catch(Exception e){
            return -1;
        }
    }

    double nextDouble(){
        return Double.parseDouble(next());
    }

    String next(){
        try{
            StringBuilder res = new StringBuilder("");
            int c = System.in.read();
            while(Character.isWhitespace(c))
                c = System.in.read();
            do{
                res.append((char)c);
            }while(!Character.isWhitespace(c=System.in.read()));
            return res.toString();
        }catch(Exception e){
            return null;
        }
    }

    String nextLine(){
        try{
            StringBuilder res = new StringBuilder("");
            int c = System.in.read();
            while(c == '\r' || c == '\n')
                c = System.in.read();
            do{
                res.append((char)c);
                c = System.in.read();
            }while(c != '\r' && c != '\n');
            return res.toString();
        }catch(Exception e){
            return null;
        }
    }

    public static void main(String[] args){
        new TaskC().run();
    }
}


import java.util.*;

/**
 * Created by IntelliJ IDEA.
 * User: piyushd
 * Date: 3/26/11
 * Time: 10:53 PM
 * To change this template use File | Settings | File Templates.
 */
public class TaskC {

    void run() {
        int n = nextInt(), a = nextInt(), b = nextInt();

        long[] p = new long[n];
        Arrays.fill(p, 1);
        int sum = 1;

        for(int i = 1; i <= b; i++) {
            p[i] = sum + 1;
            sum += p[i];
        }

        if(b == 0 && a > 0) {
            b++;
            if(a + b >= n) {
                System.out.println(-1);
                return;
            }
        }

        for(int i = b + 1; i <= a + b; i++) {
            p[i] = p[i - 1] + 1;
        }

        for(int i = 0; i < n; i++) {
            if(i > 0) System.out.print(" ");
            System.out.print(p[i]);
        }
        System.out.println();
    }

    int nextInt(){
        try{
            int c = System.in.read();
            if(c == -1) return c;
            while(c != '-' && (c < '0' || '9' < c)){
                c = System.in.read();
                if(c == -1) return c;
            }
            if(c == '-') return -nextInt();
            int res = 0;
            do{
                res *= 10;
                res += c - '0';
                c = System.in.read();
            }while('0' <= c && c <= '9');
            return res;
        }catch(Exception e){
            return -1;
        }
    }

    long nextLong(){
        try{
            int c = System.in.read();
            if(c == -1) return -1;
            while(c != '-' && (c < '0' || '9' < c)){
                c = System.in.read();
                if(c == -1) return -1;
            }
            if(c == '-') return -nextLong();
            long res = 0;
            do{
                res *= 10;
                res += c-'0';
                c = System.in.read();
            }while('0' <= c && c <= '9');
            return res;
        }catch(Exception e){
            return -1;
        }
    }

    double nextDouble(){
        return Double.parseDouble(next());
    }

    String next(){
        try{
            StringBuilder res = new StringBuilder("");
            int c = System.in.read();
            while(Character.isWhitespace(c))
                c = System.in.read();
            do{
                res.append((char)c);
            }while(!Character.isWhitespace(c=System.in.read()));
            return res.toString();
        }catch(Exception e){
            return null;
        }
    }

    String nextLine(){
        try{
            StringBuilder res = new StringBuilder("");
            int c = System.in.read();
            while(c == '\r' || c == '\n')
                c = System.in.read();
            do{
                res.append((char)c);
                c = System.in.read();
            }while(c != '\r' && c != '\n');
            return res.toString();
        }catch(Exception e){
            return null;
        }
    }

    public static void main(String[] args){
        new TaskC().run();
    }
}


import java.awt.List;
import java.io.*;
import java.util.*;
import java.math.*;
import java.lang.*;

public class problem_C {

    public static void main(String[] args) {
        new problem_C().run();
    }

    Scanner in;
    PrintWriter out;
    boolean eof = false;

    private void run() {
        Locale.setDefault(Locale.US);
        try {
            in = new Scanner(System.in);
            out = new PrintWriter(System.out);
            solve();
            out.close();
        } catch (Throwable e) {
            e.printStackTrace();
            System.exit(566);
        }
    }

    int[] powers = {1, 10, 100, 1000, 10000, 100000, 1000000, 10000000, 100000000, 1000000000};

    int getMask(int x)
    {
        int prod = 0, p = 0;

        while (x != 0)
        {
            int k = x % 10;
            if (k == 4 || k == 7)
                prod += k * powers[p++];
            x /= 10;
        }
        return prod;
    }

    ArrayList<Integer> l = new ArrayList<Integer>();

    int dp(int max, int sum, int a, int b)
    {
        if (a == 0 && b == 0)
            return max;
        else if (b != 0)
        {
            l.add(sum + 1);
            return dp(sum + 1, sum + sum + 1, a, b - 1);
        }
        else if (a != 0)
        {
            l.add(max + 1);
            return dp(max + 1, sum + max + 1, a - 1, b);
        }
        else
            return -1;
    }

    private void solve() throws IOException {
        int n = in.nextInt(),
            a = in.nextInt(),
            b = in.nextInt();

        l.add(1);
        l.add(1);
        if (a < n - 1 || a == 0)
        {
            int max = dp(1, 2, a, b);
            if (max > 50000)
                out.println(-1);
            else
            {
                for (int i = 0; i < l.size(); i++)
                    out.print(l.get(i).toString() + " ");
                for (int i = 0; i < n - l.size(); i++)
                    out.print("1 ");
            }
        }
        else
            out.println(-1);

    }

}


import java.awt.List;
import java.io.*;
import java.util.*;
import java.math.*;
import java.lang.*;

public class problem_C {

    public static void main(String[] args) {
        new problem_C().run();
    }

    Scanner in;
    PrintWriter out;
    boolean eof = false;

    private void run() {
        Locale.setDefault(Locale.US);
        try {
            in = new Scanner(System.in);
            out = new PrintWriter(System.out);
            solve();
            out.close();
        } catch (Throwable e) {
            e.printStackTrace();
            System.exit(566);
        }
    }

    int[] powers = {1, 10, 100, 1000, 10000, 100000, 1000000, 10000000, 100000000, 1000000000};

    int getMask(int x)
    {
        int prod = 0, p = 0;

        while (x != 0)
        {
            int k = x % 10;
            if (k == 4 || k == 7)
                prod += k * powers[p++];
            x /= 10;
        }
        return prod;
    }

    ArrayList<Integer> l = new ArrayList<Integer>();

    int dp(int max, int sum, int a, int b)
    {
        if (a == 0 && b == 0)
            return max;
        else if (b != 0)
        {
            l.add(sum + 1);
            return dp(sum + 1, sum + sum + 1, a, b - 1);
        }
        else if (a != 0)
        {
            l.add(max + 1);
            return dp(max + 1, sum + max + 1, a - 1, b);
        }
        else
            return -1;
    }

    private void solve() throws IOException {
        int n = in.nextInt(),
            a = in.nextInt(),
            b = in.nextInt();

        l.add(1);
        if (a + b <= n)
        {
            int max = dp(1, 1, a, b);
            if (max > 50000)
                out.println(-1);
            else
            {
                for (int i = 0; i < l.size(); i++)
                    out.print(l.get(i).toString() + " ");
                for (int i = 0; i < n - l.size(); i++)
                    out.print("1 ");
            }
        }
        else
            out.println(-1);

    }

}


import java.awt.List;
import java.io.*;
import java.util.*;
import java.math.*;
import java.lang.*;

public class problem_C {

    public static void main(String[] args) {
        new problem_C().run();
    }

    Scanner in;
    PrintWriter out;
    boolean eof = false;

    private void run() {
        Locale.setDefault(Locale.US);
        try {
            in = new Scanner(System.in);
            out = new PrintWriter(System.out);
            solve();
            out.close();
        } catch (Throwable e) {
            e.printStackTrace();
            System.exit(566);
        }
    }

    int[] powers = {1, 10, 100, 1000, 10000, 100000, 1000000, 10000000, 100000000, 1000000000};

    int getMask(int x)
    {
        int prod = 0, p = 0;

        while (x != 0)
        {
            int k = x % 10;
            if (k == 4 || k == 7)
                prod += k * powers[p++];
            x /= 10;
        }
        return prod;
    }

    ArrayList<Integer> l = new ArrayList<Integer>();

    int dp(int max, int sum, int a, int b)
    {
        if (a == 0 && b == 0)
            return max;
        else if (b != 0)
        {
            l.add(sum + 1);
            return dp(sum + 1, sum + sum + 1, a, b - 1);
        }
        else if (a != 0)
        {
            l.add(max + 1);
            return dp(max + 1, sum + max + 1, a - 1, b);
        }
        else
            return -1;
    }

    private void solve() throws IOException {
        int n = in.nextInt(),
            a = in.nextInt(),
            b = in.nextInt();

        if (a < n - 1 || a == 0)
        {
            l.add(1);
            int max;
            if (b == 0 && n != 1)
            {
                l.add(0, 1);
                max = dp(1, 2, a, b);
            }
            else
                max = dp(1, 1, a, b);
            if (max > 50000)
                out.println(-1);
            else
            {
                for (int i = 0; i < l.size(); i++)
                    out.print(l.get(i).toString() + " ");
                for (int i = 0; i < n - l.size(); i++)
                    out.print("1 ");
            }
        }
        else
            out.println(-1);

    }

}


import java.awt.List;
import java.io.*;
import java.util.*;
import java.math.*;
import java.lang.*;

public class problem_C {

    public static void main(String[] args) {
        new problem_C().run();
    }

    Scanner in;
    PrintWriter out;
    boolean eof = false;

    private void run() {
        Locale.setDefault(Locale.US);
        try {
            in = new Scanner(System.in);
            out = new PrintWriter(System.out);
            solve();
            out.close();
        } catch (Throwable e) {
            e.printStackTrace();
            System.exit(566);
        }
    }

    int[] powers = {1, 10, 100, 1000, 10000, 100000, 1000000, 10000000, 100000000, 1000000000};

    int getMask(int x)
    {
        int prod = 0, p = 0;

        while (x != 0)
        {
            int k = x % 10;
            if (k == 4 || k == 7)
                prod += k * powers[p++];
            x /= 10;
        }
        return prod;
    }

    ArrayList<Integer> l = new ArrayList<Integer>();

    int dp(int max, int sum, int a, int b)
    {
        if (a == 0 && b == 0)
            return max;
        else if (a != 0)
        {
            l.add(max + 1);
            return dp(max + 1, sum + max + 1, a - 1, b);
        }
        else
        {
            l.add(sum + 1);
            return dp(sum + 1, sum + sum + 1, a, b - 1);
        }
    }

    private void solve() throws IOException {
        int n = in.nextInt(),
            a = in.nextInt(),
            b = in.nextInt();

        l.add(1);
        if (a + b <= n)
        {
            int max = dp(1, 1, a, b);
            if (max > 50000)
                out.println(-1);
            else
            {
                for (int i = 0; i < l.size(); i++)
                    out.print(l.get(i).toString() + " ");
                for (int i = 0; i < n - l.size(); i++)
                    out.print("1 ");
            }
        }
        else
            out.println(-1);

    }

}


import java.awt.List;
import java.io.*;
import java.util.*;
import java.math.*;
import java.lang.*;

public class problem_C {

    public static void main(String[] args) {
        new problem_C().run();
    }

    Scanner in;
    PrintWriter out;
    boolean eof = false;

    private void run() {
        Locale.setDefault(Locale.US);
        try {
            in = new Scanner(System.in);
            out = new PrintWriter(System.out);
            solve();
            out.close();
        } catch (Throwable e) {
            e.printStackTrace();
            System.exit(566);
        }
    }

    int[] powers = {1, 10, 100, 1000, 10000, 100000, 1000000, 10000000, 100000000, 1000000000};

    int getMask(int x)
    {
        int prod = 0, p = 0;

        while (x != 0)
        {
            int k = x % 10;
            if (k == 4 || k == 7)
                prod += k * powers[p++];
            x /= 10;
        }
        return prod;
    }

    ArrayList<Integer> l = new ArrayList<Integer>();

    int dp(int max, int sum, int a, int b)
    {
        if (a == 0 && b == 0)
            return max;
        else if (b != 0)
        {
            l.add(sum + 1);
            return dp(sum + 1, sum + sum + 1, a, b - 1);
        }
        else if (a != 0)
        {
            l.add(max + 1);
            return dp(max + 1, sum + max + 1, a - 1, b);
        }
        else
            return -1;
    }

    private void solve() throws IOException {
        int n = in.nextInt(),
            a = in.nextInt(),
            b = in.nextInt();

        l.add(1);
        if (a + b < n)
        {
            int max = dp(1, 1, a, b);
            if (max > 50000)
                out.println(-1);
            else
            {
                for (int i = 0; i < l.size(); i++)
                    out.print(l.get(i).toString() + " ");
                for (int i = 0; i < n - l.size(); i++)
                    out.print("1 ");
            }
        }
        else
            out.println(-1);

    }

}


import java.awt.List;
import java.io.*;
import java.util.*;
import java.math.*;
import java.lang.*;

public class problem_C {

    public static void main(String[] args) {
        new problem_C().run();
    }

    Scanner in;
    PrintWriter out;
    boolean eof = false;

    private void run() {
        Locale.setDefault(Locale.US);
        try {
            in = new Scanner(System.in);
            out = new PrintWriter(System.out);
            solve();
            out.close();
        } catch (Throwable e) {
            e.printStackTrace();
            System.exit(566);
        }
    }

    int[] powers = {1, 10, 100, 1000, 10000, 100000, 1000000, 10000000, 100000000, 1000000000};

    int getMask(int x)
    {
        int prod = 0, p = 0;

        while (x != 0)
        {
            int k = x % 10;
            if (k == 4 || k == 7)
                prod += k * powers[p++];
            x /= 10;
        }
        return prod;
    }

    ArrayList<Integer> l = new ArrayList<Integer>();

    void dp(int max, int sum, int a, int b)
    {
        if (a == 0 && b == 0)
            return;
        else if (a != 0)
        {
            l.add(max + 1);
            dp(max + 1, sum + max + 1, a - 1, b);
        }
        else
        {
            l.add(sum + 1);
            dp(sum + 1, sum + sum + 1, a, b - 1);
        }
    }

    private void solve() throws IOException {
        int n = in.nextInt(),
            a = in.nextInt(),
            b = in.nextInt();

        l.add(1);
        dp(1, 1, a, b);
        for (int i = 0; i < l.size(); i++)
            out.print(l.get(i).toString() + " ");
        for (int i = 0; i < n - l.size(); i++)
            out.print("1 ");

    }

}


import java.awt.List;
import java.io.*;
import java.util.*;
import java.math.*;
import java.lang.*;

public class problem_C {

    public static void main(String[] args) {
        new problem_C().run();
    }

    Scanner in;
    PrintWriter out;
    boolean eof = false;

    private void run() {
        Locale.setDefault(Locale.US);
        try {
            in = new Scanner(System.in);
            out = new PrintWriter(System.out);
            solve();
            out.close();
        } catch (Throwable e) {
            e.printStackTrace();
            System.exit(566);
        }
    }

    int[] powers = {1, 10, 100, 1000, 10000, 100000, 1000000, 10000000, 100000000, 1000000000};

    int getMask(int x)
    {
        int prod = 0, p = 0;

        while (x != 0)
        {
            int k = x % 10;
            if (k == 4 || k == 7)
                prod += k * powers[p++];
            x /= 10;
        }
        return prod;
    }

    ArrayList<Integer> l = new ArrayList<Integer>();

    int dp(int max, int sum, int a, int b)
    {
        if (a == 0 && b == 0)
            return max;
        else if (b != 0)
        {
            l.add(sum + 1);
            return dp(sum + 1, sum + sum + 1, a, b - 1);
        }
        else if (a != 0)
        {
            l.add(max + 1);
            return dp(max + 1, sum + max + 1, a - 1, b);
        }
        else
            return -1;
    }

    private void solve() throws IOException {
        int n = in.nextInt(),
            a = in.nextInt(),
            b = in.nextInt();

        l.add(1);
        if (a < n - 1 || a == 0)
        {
            int max = dp(1, 1, a, b);
            if (max > 50000)
                out.println(-1);
            else
            {
                for (int i = 0; i < l.size(); i++)
                    out.print(l.get(i).toString() + " ");
                for (int i = 0; i < n - l.size(); i++)
                    out.print("1 ");
            }
        }
        else
            out.println(-1);

    }

}


import java.awt.List;
import java.io.*;
import java.util.*;
import java.math.*;
import java.lang.*;

public class problem_C {

    public static void main(String[] args) {
        new problem_C().run();
    }

    Scanner in;
    PrintWriter out;
    boolean eof = false;

    private void run() {
        Locale.setDefault(Locale.US);
        try {
            in = new Scanner(System.in);
            out = new PrintWriter(System.out);
            solve();
            out.close();
        } catch (Throwable e) {
            e.printStackTrace();
            System.exit(566);
        }
    }

    int[] powers = {1, 10, 100, 1000, 10000, 100000, 1000000, 10000000, 100000000, 1000000000};

    int getMask(int x)
    {
        int prod = 0, p = 0;

        while (x != 0)
        {
            int k = x % 10;
            if (k == 4 || k == 7)
                prod += k * powers[p++];
            x /= 10;
        }
        return prod;
    }

    ArrayList<Integer> l = new ArrayList<Integer>();

    int dp(int max, int sum, int a, int b)
    {
        if (a == 0 && b == 0)
            return max;
        else if (b != 0)
        {
            l.add(sum + 1);
            return dp(sum + 1, sum + sum + 1, a, b - 1);
        }
        else if (a != 0)
        {
            l.add(max + 1);
            return dp(max + 1, sum + max + 1, a - 1, b);
        }
        else
            return -1;
    }

    private void solve() throws IOException {
        int n = in.nextInt(),
            a = in.nextInt(),
            b = in.nextInt();

        l.add(1);
        if (a < n - 1)
        {
            int max = dp(1, 1, a, b);
            if (max > 50000)
                out.println(-1);
            else
            {
                for (int i = 0; i < l.size(); i++)
                    out.print(l.get(i).toString() + " ");
                for (int i = 0; i < n - l.size(); i++)
                    out.print("1 ");
            }
        }
        else
            out.println(-1);

    }

}


import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.util.StringTokenizer;
import java.util.Vector;

public class Solution {
    public static void main(String[] args) throws IOException {
        BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
        PrintWriter out = new PrintWriter(System.out);

        StringTokenizer st = new StringTokenizer(in.readLine());

        int n = Integer.parseInt(st.nextToken());
        int a = Integer.parseInt(st.nextToken());
        int b = Integer.parseInt(st.nextToken());

        Vector<Long> ans = new Vector<Long>();
        ans.add(1L);
        long sum = 1;
        long max = 1;
        boolean fImp = false;
        int count = 1;

        for (int i = 0; i < b; i++) {
            long curr = sum + 1;
            if (curr > 50000) {
                fImp = true;
                break;
            }
            ans.add(curr);
            count++;
            sum += curr;
            max = curr;
        }

        if (b == 0 && a != 0) {
            ans.add(1L);
            count++;
        }

        for (int i = 0; i < a; i++) {
            long curr = max + 1;
            if (curr > 50000) {
                fImp = true;
                break;
            }
            ans.add(curr);
            count++;
            max = curr;
        }

        for (int i = 0; i < n - count; i++)
            ans.add(1L);

        if (fImp || count > n)
            out.println(-1);
        else
            for (Long l : ans)
                out.print(l + " ");

        out.close();
    }
}


import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.util.StringTokenizer;
import java.util.Vector;

public class Solution {
    public static void main(String[] args) throws IOException {
        BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
        PrintWriter out = new PrintWriter(System.out);

        StringTokenizer st = new StringTokenizer(in.readLine());

        int n = Integer.parseInt(st.nextToken());
        int a = Integer.parseInt(st.nextToken());
        int b = Integer.parseInt(st.nextToken());

        Vector<Long> ans = new Vector<Long>();
        ans.add(1L);
        long sum = 1;
        long max = 1;
        boolean fImp = false;
        int count = 1;

        for (int i = 0; i < b; i++) {
            long curr = sum + 1;
            if (curr > 50000) {
                fImp = true;
                break;
            }
            ans.add(curr);
            count++;
            sum += curr;
            max = curr;
        }

        if (b == 0) {
            ans.add(1L);
            count++;
        }

        for (int i = 0; i < a; i++) {
            long curr = max + 1;
            if (curr > 50000) {
                fImp = true;
                break;
            }
            ans.add(curr);
            count++;
            max = curr;
        }

        for (int i = 0; i < n - count; i++)
            ans.add(1L);

        if (fImp || count > n)
            out.println(-1);
        else
            for (Long l : ans)
                out.print(l + " ");

        out.close();
    }
}


import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.util.StringTokenizer;
import java.util.Vector;

public class Solution {
    public static void main(String[] args) throws IOException {
        BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
        PrintWriter out = new PrintWriter(System.out);

        StringTokenizer st = new StringTokenizer(in.readLine());

        int n = Integer.parseInt(st.nextToken());
        int a = Integer.parseInt(st.nextToken());
        int b = Integer.parseInt(st.nextToken());

        Vector<Long> ans = new Vector<Long>();
        ans.add(1L);
        long sum = 1;
        long max = 1;
        boolean fImp = false;

        for (int i = 0; i < b; i++) {
            long curr = sum + 1;
            if (curr > 50000) {
                fImp = true;
                break;
            }
            ans.add(curr);
            sum += curr;
            max = curr;
        }

        for (int i = 0; i < a; i++) {
            long curr = max + 1;
            if (curr > 50000) {
                fImp = true;
                break;
            }
            ans.add(curr);
            max = curr;
        }

        for (int i = 0; i < n - 1 - a - b; i++)
            ans.add(1L);

        if (fImp)
            out.println(1);
        else
            for (Long l : ans)
                out.print(l + " ");

        out.close();
    }
}


import java.util.*;
import java.io.*;
import java.awt.Point;
import static java.lang.Math.*;

public class P148C {
    static int sum = 0;
    static int max = 0;
    static int ix = 0;
    static int n;
    public static void main(String[] args) throws Exception {
        Scanner in = new Scanner(System.in);
        n = in.nextInt();
        int a = in.nextInt();
        int b = in.nextInt();

        if(a==n-1 && a>0) { System.out.println(-1); return; }
        put(1);
        if(b==0 && a>0) put(1);
        for(int i=0; i<b; i++)
            put(sum+1);
        for(int i=0; i<a; i++)
            put(max+1);
        while(ix < n)
            put(1);
    }
    public static void put(int x) {
        ix++;
        System.out.print(x+(ix==n?"\n":" "));
        sum += x;
        max = max(max, x);
    }

}


import java.util.*;
import java.io.*;
import java.awt.Point;
import static java.lang.Math.*;

public class P148C {
    static int sum = 0;
    static int max = 0;
    static int ix = 0;
    static int n;
    public static void main(String[] args) throws Exception {
        Scanner in = new Scanner(System.in);
        n = in.nextInt();
        int a = in.nextInt();
        int b = in.nextInt();

        if(a==n-1 && a>0) { System.out.println(-1); return; }
        put(1);
        if(b==0) put(1);
        for(int i=0; i<b; i++)
            put(sum+1);
        for(int i=0; i<a; i++)
            put(max+1);
        while(ix < n)
            put(1);
    }
    public static void put(int x) {
        ix++;
        System.out.print(x+(ix==n?"\n":" "));
        sum += x;
        max = max(max, x);
    }

}


import java.util.*;
import java.io.*;
import java.awt.Point;
import static java.lang.Math.*;

public class P148C {
    static int sum = 0;
    static int max = 0;
    static int ix = 0;
    static int n;
    public static void main(String[] args) throws Exception {
        Scanner in = new Scanner(System.in);
        n = in.nextInt();
        int a = in.nextInt();
        int b = in.nextInt();

        if(n==2 && a==1) { System.out.println(-1); return; }
        put(1);
        for(int i=0; i<b; i++)
            put(sum+1);
        for(int i=0; i<a; i++)
            put(max+1);
        while(ix < n)
            put(1);
    }
    public static void put(int x) {
        ix++;
        System.out.print(x+(ix==n?"\n":" "));
        sum += x;
        max = max(max, x);
    }

}


import java.util.*;
import java.io.*;
import java.awt.Point;
import static java.lang.Math.*;

public class P148C {
    static int sum = 0;
    static int max = 0;
    static int ix = 0;
    static int n;
    public static void main(String[] args) throws Exception {
        Scanner in = new Scanner(System.in);
        n = in.nextInt();
        int a = in.nextInt();
        int b = in.nextInt();

        if(a==n-1) { System.out.println(-1); return; }
        put(1);
        if(b==0) put(1);
        for(int i=0; i<b; i++)
            put(sum+1);
        for(int i=0; i<a; i++)
            put(max+1);
        while(ix < n)
            put(1);
    }
    public static void put(int x) {
        ix++;
        System.out.print(x+(ix==n?"\n":" "));
        sum += x;
        max = max(max, x);
    }

}


import java.io.OutputStream;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.InputMismatchException;
import java.io.Writer;
import java.math.BigInteger;
import java.io.InputStream;

/**
 * Built using CHelper plug-in
 * Actual solution is at the top
 */
public class Main {
	public static void main(String[] args) {
		InputStream inputStream = System.in;
		OutputStream outputStream = System.out;
		StreamInputReader in = new StreamInputReader(inputStream);
		OutputWriter out = new OutputWriter(outputStream);
		TaskC solver = new TaskC();
		solver.solve(1, in, out);
		out.close();
	}
}

class TaskC {
	public void solve(int testNumber, StreamInputReader in, OutputWriter out) {
        int n = in.readInt(), a = in.readInt(), b = in.readInt();
        if (a + b == 0) {
            for(int i = 0; i < n; ++i) out.print("1 ");
            return;
        }
        int[] arr = new int[n];
        if (a != 0 && b == 0) {
            if (n < a+2) {
                out.print(-1);
                return;
            }
            arr[0] = 2;
            arr[1] = 1;
            for(int i = 0; i < a; ++i) {
                arr[2+i] = 3+i;
            }
            for(int i = 0; i < n-a-2; ++i) {
                arr[2+a+i] = 2+a;
            }
            for(int x: arr) {
                out.print(x + " ");
            }
            return;
        }
        arr[0] = 1;
        int z = 0;
        for(int i = 0; i < b; ++i) {
            z += z + 1;
            arr[1+i] = z + 1;
        }
        for(int i = 0; i < a; ++i) {
            ++z;
            arr[b+1+i] = z+1;
        }
        for(int i = 0; i < n - a - b - 1; ++i) {
            arr[a+b+1+i] = z;
        }
        for(int x: arr) {
            out.print(x + " ");
        }
	}
}

class StreamInputReader extends InputReader {
    private InputStream stream;
    private byte[] buf = new byte[1024];
    private int curChar;
    private int numChars;

    public StreamInputReader(InputStream stream) {
        this.stream = stream;
    }

    public int read() {
        if (numChars == -1)
            throw new InputMismatchException();
        if (curChar >= numChars) {
            curChar = 0;
            try {
                numChars = stream.read(buf);
            } catch (IOException e) {
                throw new InputMismatchException();
            }
            if (numChars <= 0)
                return -1;
        }
        return buf[curChar++];
    }

    }

class OutputWriter {
	private final PrintWriter writer;

	public OutputWriter(OutputStream outputStream) {
		writer = new PrintWriter(outputStream);
	}

	public OutputWriter(Writer writer) {
		this.writer = new PrintWriter(writer);
	}

	public void print(Object...objects) {
		for (int i = 0; i < objects.length; i++) {
			if (i != 0)
				writer.print(' ');
			writer.print(objects[i]);
		}
	}

	public void close() {
		writer.close();
	}
}

abstract class InputReader {

	public abstract int read();

    public int readInt() {
        int c = read();
        while (isSpaceChar(c))
            c = read();
        int sgn = 1;
        if (c == '-') {
            sgn = -1;
            c = read();
        }
        int res = 0;
        do {
            if (c < '0' || c > '9')
                throw new InputMismatchException();
            res *= 10;
            res += c - '0';
            c = read();
        } while (!isSpaceChar(c));
        return res * sgn;
    }

    protected boolean isSpaceChar(int c) {
        return c == ' ' || c == '\n' || c == '\r' || c == '\t' || c == -1;
    }

    }


import java.io.OutputStream;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.InputMismatchException;
import java.io.Writer;
import java.math.BigInteger;
import java.io.InputStream;

/**
 * Built using CHelper plug-in
 * Actual solution is at the top
 */
public class Main {
	public static void main(String[] args) {
		InputStream inputStream = System.in;
		OutputStream outputStream = System.out;
		StreamInputReader in = new StreamInputReader(inputStream);
		OutputWriter out = new OutputWriter(outputStream);
		TaskC solver = new TaskC();
		solver.solve(1, in, out);
		out.close();
	}
}

class TaskC {
	public void solve(int testNumber, StreamInputReader in, OutputWriter out) {
        int n = in.readInt(), a = in.readInt(), b = in.readInt();
        if (a + b == 0) {
            for(int i = 0; i < n; ++i) out.print("1 ");
            return;
        }
        int[] arr = new int[n];
        if (a != 0 && b == 0) {
            if (a == 1) {
                out.print(-1);
                return;
            }
            arr[0] = 2;
            arr[1] = 1;
            for(int i = 0; i < a; ++i) {
                arr[2+i] = 3+i;
            }
            for(int i = 0; i < n-a-2; ++i) {
                arr[2+a+i] = 2+a;
            }
            for(int x: arr) {
                out.print(x + " ");
            }
            return;
        }
        arr[0] = 1;
        int z = 0;
        for(int i = 0; i < b; ++i) {
            z += z + 1;
            arr[1+i] = z + 1;
        }
        for(int i = 0; i < a; ++i) {
            ++z;
            arr[b+1+i] = z+1;
        }
        for(int i = 0; i < n - a - b - 1; ++i) {
            arr[a+b+1+i] = z;
        }
        for(int x: arr) {
            out.print(x + " ");
        }
	}
}

class StreamInputReader extends InputReader {
    private InputStream stream;
    private byte[] buf = new byte[1024];
    private int curChar;
    private int numChars;

    public StreamInputReader(InputStream stream) {
        this.stream = stream;
    }

    public int read() {
        if (numChars == -1)
            throw new InputMismatchException();
        if (curChar >= numChars) {
            curChar = 0;
            try {
                numChars = stream.read(buf);
            } catch (IOException e) {
                throw new InputMismatchException();
            }
            if (numChars <= 0)
                return -1;
        }
        return buf[curChar++];
    }

    }

class OutputWriter {
	private final PrintWriter writer;

	public OutputWriter(OutputStream outputStream) {
		writer = new PrintWriter(outputStream);
	}

	public OutputWriter(Writer writer) {
		this.writer = new PrintWriter(writer);
	}

	public void print(Object...objects) {
		for (int i = 0; i < objects.length; i++) {
			if (i != 0)
				writer.print(' ');
			writer.print(objects[i]);
		}
	}

	public void close() {
		writer.close();
	}
}

abstract class InputReader {

	public abstract int read();

    public int readInt() {
        int c = read();
        while (isSpaceChar(c))
            c = read();
        int sgn = 1;
        if (c == '-') {
            sgn = -1;
            c = read();
        }
        int res = 0;
        do {
            if (c < '0' || c > '9')
                throw new InputMismatchException();
            res *= 10;
            res += c - '0';
            c = read();
        } while (!isSpaceChar(c));
        return res * sgn;
    }

    protected boolean isSpaceChar(int c) {
        return c == ' ' || c == '\n' || c == '\r' || c == '\t' || c == -1;
    }

    }


import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.InputMismatchException;

public class R105_D2_C {

    public static void main(String[] args) {
        //BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
        InputReader4 in = new InputReader4(System.in);
        int n = in.readInt();
        int oh = in.readInt();
        int wow = in.readInt();
        int [] res = new int [n];
        Arrays.fill(res,1);
        int max = 50000;
        int sum = 1;
        for (int i = 1; i <= wow; i++) {
            int curr = sum+1;
            if(curr>max){
                System.out.println(-1);
                return;
            }
            res[i] = curr;
            sum += curr;
        }
        for (int i = wow+1; i < wow+oh+1; i++) {
            if(res[i-1]+1>max || res[i-1]+1>sum){
                System.out.println(-1);
                return;
            }
            res[i] = res[i-1] + 1;
            sum += res[i];
        }
        System.out.print(res[0]);
        for (int i = 1; i < res.length; i++) {
            System.out.print(" "+res[i]);
        }
    }

    static class InputReader4 {
        private InputStream stream;
        private byte[] buf = new byte[1000];
        private int curChar, numChars;

        public InputReader4(InputStream stream) {
            this.stream = stream;
        }

        private int read() {
            if (numChars == -1)
                throw new InputMismatchException();
            if (curChar >= numChars) {
                curChar = 0;
                try {
                    numChars = stream.read(buf);
                } catch (IOException e) {
                    throw new InputMismatchException();
                }
                if (numChars <= 0)
                    return -1;
            }
            return buf[curChar++];
        }

        public int readInt() {
            int c = read();
            while (isSpaceChar(c))
                c = read();
            int sgn = 1;
            if (c == '-') {
                sgn = -1;
                c = read();
            }
            int res = 0;
            do {
                if (c < '0' || c > '9')
                    throw new InputMismatchException();
                res *= 10;
                res += c - '0';
                c = read();
            } while (!isSpaceChar(c));
            return res * sgn;
        }

        public long readLong() {
            int c = read();
            while (isSpaceChar(c))
                c = read();
            int sgn = 1;
            if (c == '-') {
                sgn = -1;
                c = read();
            }
            long res = 0;
            do {
                if (c < '0' || c > '9')
                    throw new InputMismatchException();
                res *= 10;
                res += c - '0';
                c = read();
            } while (!isSpaceChar(c));
            return res * sgn;
        }

        public String readString() {
            int c = read();
            while (isSpaceChar(c))
                c = read();
            StringBuffer res = new StringBuffer();
            do {
                res.appendCodePoint(c);
                c = read();
            } while (!isSpaceChar(c));
            return res.toString();
        }

        private boolean isSpaceChar(int c) {
            return c == ' ' || c == '\n' || c == '\r' || c == '\t' || c == -1;
        }

        private String readLine0() {
            StringBuffer buf = new StringBuffer();
            int c = read();
            while (c != '\n' && c != -1) {
                buf.appendCodePoint(c);
                c = read();
            }
            return buf.toString();
        }

        public String readLine() {
            String s = readLine0();
            while (s.trim().length() == 0)
                s = readLine0();
            return s;
        }

        public String readLine(boolean ignoreEmptyLines) {
            if (ignoreEmptyLines)
                return readLine();
            else
                return readLine0();
        }

        public char readCharacter() {
            int c = read();
            while (isSpaceChar(c))
                c = read();
            return (char) c;
        }

        public double readDouble() {
            int c = read();
            while (isSpaceChar(c))
                c = read();
            int sgn = 1;
            if (c == '-') {
                sgn = -1;
                c = read();
            }
            double res = 0;
            while (!isSpaceChar(c) && c != '.') {
                if (c == 'e' || c == 'E')
                    return res * Math.pow(10, readInt());
                if (c < '0' || c > '9')
                    throw new InputMismatchException();
                res *= 10;
                res += c - '0';
                c = read();
            }
            if (c == '.') {
                c = read();
                double m = 1;
                while (!isSpaceChar(c)) {
                    if (c == 'e' || c == 'E')
                        return res * Math.pow(10, readInt());
                    if (c < '0' || c > '9')
                        throw new InputMismatchException();
                    m /= 10;
                    res += (c - '0') * m;
                    c = read();
                }
            }
            return res * sgn;
        }
    }

}