import java.io.*;

public class test {

	public static void main(String[] args) throws Exception {

		int n = nextInt();
		int a = nextInt();
		int b = nextInt();
		int i = 1;
		for(i = 2; i <= a+2; i++){
			print(i + " ");
			n--;
		}

		int pr = 1;
		while(b-- > 0){

			print( (i*(i+1))/2 + pr + " ");
			i++;
			pr+=(i*(i+1))/2;
			n--;
		}
		while(n-- > 1) print("1 ");
		exit("1");

	}

	private static PrintWriter out;
	private static BufferedReader inB;
	private static boolean FILE = false;

	static {
		try {
			out = new PrintWriter(FILE ? (new FileOutputStream("output.txt")) : System.out);
			inB = new BufferedReader(new InputStreamReader(FILE ? new FileInputStream("billboards.txt") : System.in));
		} catch(Exception e) {e.printStackTrace();}
	}

	private static StreamTokenizer in = new StreamTokenizer(inB);

	private static void exit(Object o) throws Exception {
		out.println(o);
		out.flush();
		System.exit(0);
	}
	private static void println(Object o) throws Exception{
		out.println(o);
		out.flush();
	}
	private static void print(Object o) throws Exception{
		out.print(o);
		out.flush();
	}
	private static int nextInt() throws Exception {
		in.nextToken();
		return (int)in.nval;
	}
	private static String nextString() throws Exception {
		in.nextToken();
		return in.sval;
	}
}


import java.io.*;

public class test {

	public static void main(String[] args) throws Exception {

		int n = nextInt();
		int a = nextInt();
		int b = nextInt();
		int i = 1;
		for(i = 2; i <= a+2; i++){
			print(i + " ");
			n--;
		}

		int pr = 1;
		while(b-- > 0){

			print( (i*(i+1))/2 + pr + " ");
			i++;
			pr+=(i*(i+1))/2;
			n--;
		}
		while(n-- > 0) print("1 ");

	}

	private static PrintWriter out;
	private static BufferedReader inB;
	private static boolean FILE = false;

	static {
		try {
			out = new PrintWriter(FILE ? (new FileOutputStream("output.txt")) : System.out);
			inB = new BufferedReader(new InputStreamReader(FILE ? new FileInputStream("billboards.txt") : System.in));
		} catch(Exception e) {e.printStackTrace();}
	}

	private static StreamTokenizer in = new StreamTokenizer(inB);

	private static void exit(Object o) throws Exception {
		out.println(o);
		out.flush();
		System.exit(0);
	}
	private static void println(Object o) throws Exception{
		out.println(o);
		out.flush();
	}
	private static void print(Object o) throws Exception{
		out.print(o);
		out.flush();
	}
	private static int nextInt() throws Exception {
		in.nextToken();
		return (int)in.nval;
	}
	private static String nextString() throws Exception {
		in.nextToken();
		return in.sval;
	}
}


import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.StringTokenizer;

public class Solution {
	void solve() throws IOException {
		int n = nextInt(), a = nextInt(), b = nextInt();
		int max = 0, st = 1;
		boolean[] hus = new boolean[50010];
		ArrayList<Integer> q = new ArrayList<Integer>();
		while (true) {
			max = st;
			Arrays.fill(hus, false); // null husbands
			q.add(st); // add first to queue
			for (int i = 0; i < b; ++i) { // calculating "WoW!" sum
				max += q.get(q.size() - 1) + 1;
				q.add(max);
			}
			if (max > 50000) { // 1 checking max sum
				System.out.println(-1);
				break;
			}
			for (int i = 0; i < a; ++i) { // calculating "Aah..." sum
				max++;
				q.add(max);
			}

			if (max > 50000) { // 2 checking max sum
				System.out.println(-1);
				break;
			}
			for (int el : q)
				// mark the existing
				hus[el] = true;
			int k = 1;
			for (int i = 0; i < n - a - b - 1; ++i) { // filling lasts
				while (k <= 50000 && hus[k] == true) {
					k++;
				}
				if (k > 50000)
					break;
				hus[k] = true;
				q.add(k);
			}
			if (k < max) {
				for (int i = 0; i < q.size(); ++i)
					System.out.print(q.get(i) + " ");
				break;
			} else {
				st++; // inc first appears
				q.clear();
			}
		}
	}

	BufferedReader br;
	PrintWriter out;
	StringTokenizer st;

	String nextToken() throws IOException {
		while (st == null || !st.hasMoreTokens()) {
			String s = br.readLine();
			if (s == null)
				return "-1";
			st = new StringTokenizer(s);
		}
		return st.nextToken();
	}

	int nextInt() throws IOException {
		return Integer.parseInt(nextToken());
	}

	long nextLong() throws IOException {
		return Long.parseLong(nextToken());
	}

	void run() throws IOException {
		br = new BufferedReader(new InputStreamReader(System.in));
		out = new PrintWriter(new OutputStreamWriter(System.out));
		solve();
		br.close();
		out.close();
	}

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

}


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

public class Solution {
	void solve() throws IOException {
		int n = nextInt(), a = nextInt(), b = nextInt();
		if (b != 0) {
			for (int i = 0; i < b + 1; ++i)
				System.out.print((1 << i) + " ");
			for (int i = 0; i < a; ++i)
				System.out.print("2 ");
			for (int i = 0; i < n - a - b - 1; ++i)
				System.out.print("1 ");
		} else {
			if (a + 1 == n) {
				if (a == 0)
					System.out.println(1);
				else
					System.out.println(-1);
				System.exit(0);
			}
			System.out.print("1 1 ");
			for (int i = 0; i < a; ++i)
				System.out.print("2 ");
			for (int i = 0; i < n - a - 2; ++i)
				System.out.print("1 ");
		}

	}

	BufferedReader br;
	PrintWriter out;
	StringTokenizer st;

	String nextToken() throws IOException {
		while (st == null || !st.hasMoreTokens()) {
			String s = br.readLine();
			if (s == null)
				return "-1";
			st = new StringTokenizer(s);
		}
		return st.nextToken();
	}

	int nextInt() throws IOException {
		return Integer.parseInt(nextToken());
	}

	long nextLong() throws IOException {
		return Long.parseLong(nextToken());
	}

	void run() throws IOException {
		br = new BufferedReader(new InputStreamReader(System.in));
		out = new PrintWriter(new OutputStreamWriter(System.out));
		solve();
		br.close();
		out.close();
	}

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

}


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

public class Solution {
	void solve() throws IOException {
		int n = nextInt(), a = nextInt(), b = nextInt();
		if (b != 0) {
			for (int i = 0; i < b + 1; ++i)
				System.out.print((1 << i) + " ");
			for (int i = 1; i <= a; ++i)
				System.out.print(((1 << b) + i) + " ");
			for (int i = 0; i < n - a - b - 1; ++i)
				System.out.print("1 ");
		} else {
			if (a + 1 == n) {
				if (a == 0)
					System.out.println(1);
				else
					System.out.println(-1);
				System.exit(0);
			}
			System.out.print("1 1 ");
			for (int i = 0; i < a; ++i)
				System.out.print((2 + i) + " ");
			for (int i = 0; i < n - a - 2; ++i)
				System.out.print("1 ");
		}

	}

	BufferedReader br;
	PrintWriter out;
	StringTokenizer st;

	String nextToken() throws IOException {
		while (st == null || !st.hasMoreTokens()) {
			String s = br.readLine();
			if (s == null)
				return "-1";
			st = new StringTokenizer(s);
		}
		return st.nextToken();
	}

	int nextInt() throws IOException {
		return Integer.parseInt(nextToken());
	}

	long nextLong() throws IOException {
		return Long.parseLong(nextToken());
	}

	void run() throws IOException {
		br = new BufferedReader(new InputStreamReader(System.in));
		out = new PrintWriter(new OutputStreamWriter(System.out));
		solve();
		br.close();
		out.close();
	}

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

}


import java.util.*;
public class force {
    public static void main(String[]args){
        Scanner sc=new Scanner(System.in);
        int n=sc.nextInt();
        int a=sc.nextInt();
        int b=sc.nextInt();
        if(b==15 || ((n==1) && (a!=0 || b!=0))){ System.out.println(-1); return;}
        int [] mas=new int [n];
        for(int i=0;i<=b;i++){
            mas[i]=1<<i;
        }
        for(int i=b+1;i<=b+a;i++){
            mas[i]=mas[i-1]+1;
        }
        for(int i=a+b+1;i<n;i++){
            mas[i]=mas[i-1];
        }
        for(int i=0;i<n;i++){
            System.out.println(mas[i]);
        }
    }
}


import java.util.*;
public class force {
    public static void main(String[]args){
        Scanner sc=new Scanner(System.in);
        int n=sc.nextInt();
        int a=sc.nextInt();
        int b=sc.nextInt();
        int [] mas=new int [n];
        if(a==n-1 && n>1){ System.out.println(-1); return;}
        if(b!=0){
        for(int i=0;i<=b;i++){
            mas[i]=1<<i;
        }
        for(int i=b+1;i<=b+a;i++){
            mas[i]=mas[i-1]+1;
        }
        for(int i=a+b+1;i<n;i++){
            mas[i]=mas[i-1];
        }
        }
        else {
            for(int i=n-1;i>=n-a-1;i--){
                mas[i]=10000+i;
            }
            for(int i=n-a-2;i>=0;i--){
                mas[i]=mas[i+1];
            }
        }

        for(int i=0;i<n;i++){
            System.out.println(mas[i]);
        }
    }
}


import java.util.*;
public class force {
    public static void main(String[]args){
        Scanner sc=new Scanner(System.in);
        int n=sc.nextInt();
        int a=sc.nextInt();
        int b=sc.nextInt();
        //if(b==15 || (n==1)){ System.out.println(-1); return;}
        int [] mas=new int [n];
        for(int i=0;i<=b;i++){
            mas[i]=1<<i;
        }
        for(int i=b+1;i<=b+a;i++){
            mas[i]=mas[i-1]+1;
        }
        for(int i=a+b+1;i<n;i++){
            mas[i]=mas[i-1];
        }
        for(int i=0;i<n;i++){
            System.out.println(mas[i]);
        }
    }
}


import java.util.*;
public class force {
    public static void main(String[]args){
        Scanner sc=new Scanner(System.in);
        int n=sc.nextInt();
        int a=sc.nextInt();
        int b=sc.nextInt();
        int [] mas=new int [n];
        if(a==n-1 && n>1){ System.out.println(-1); return;}
        if(b!=0){
        for(int i=0;i<=b;i++){
            mas[i]=1<<i;
        }
        for(int i=b+1;i<=b+a;i++){
            mas[i]=mas[i-1]+1;
        }
        for(int i=a+b+1;i<n;i++){
            mas[i]=mas[i-1];
        }
        }
        else {
            for(int i=2;i<a+4;i++){
                mas[i-2]=i;
            }
            for(int i=a+1;i<n;i++){
                mas[i]=mas[i-1];
            }
            mas[1]=2;
        }

        for(int i=0;i<n;i++){
            System.out.println(mas[i]);
        }
    }
}


import java.util.*;
public class force {
    public static void main(String[]args){
        Scanner sc=new Scanner(System.in);
        int n=sc.nextInt();
        int a=sc.nextInt();
        int b=sc.nextInt();
        int [] mas=new int [n];
        if(b!=0){
        for(int i=0;i<=b;i++){
            mas[i]=1<<i;
        }
        for(int i=b+1;i<=b+a;i++){
            mas[i]=mas[i-1]+1;
        }
        for(int i=a+b+1;i<n;i++){
            mas[i]=mas[i-1];
        }
        }
        else {
            for(int i=2;i<a+3;i++){
                mas[i-2]=i;
            }
            for(int i=a+1;i<n;i++){
                mas[i]=mas[i-1];
            }
        }

        for(int i=0;i<n;i++){
            System.out.println(mas[i]);
        }
    }
}


import java.util.*;
public class force {
    public static void main(String[]args){
        Scanner sc=new Scanner(System.in);
        int n=sc.nextInt();
        int a=sc.nextInt();
        int b=sc.nextInt();
        if(b==15){ System.out.println(-1); return;}
        int [] mas=new int [n];
        for(int i=0;i<=b;i++){
            mas[i]=1<<i;
        }
        for(int i=b+1;i<=b+a;i++){
            mas[i]=mas[i-1]+1;
        }
        for(int i=a+b+1;i<n;i++){
            mas[i]=mas[i-1];
        }
        for(int i=0;i<n;i++){
            System.out.println(mas[i]);
        }
    }
}


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

public class P148C {

  private enum TODO { AH, OGO, NOTHING; };

  public PrintWriter run() {
    int n = sc.nextInt();
    int a = sc.nextInt();
    int b = sc.nextInt();

    int t = 1;
    int s = 1;
    String retStr = "1 ";

    for (int i = 1; i < n; i++) {
      TODO todo = TODO.NOTHING;

      if (b > 0) { todo = TODO.OGO; }
      if ((a > 0) && (todo == TODO.NOTHING) && ((t + 1) < (s * 2))) { todo = TODO.AH; }

      switch (todo) {
        case OGO : s *= 2; t = s; b--; break;
        case AH  : t++; s += t; a--; break;
        default : s += t; break;
      }

      retStr += (t + " ");
    }

//    pw.println(a + "\t" + b + "\t" + retStr);
    pw.println(((a == 0) && (b == 0)) ? retStr : "-1");

    return pw;
  }

  private Scanner sc = new Scanner(new BufferedInputStream(System.in));
  private PrintWriter pw = new PrintWriter(new BufferedOutputStream(System.out));

  public static void main(String[] args) throws Exception {
    new P148C().run().close();
  }
}


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

public class P148C {

  public PrintWriter run() {
    int n = sc.nextInt();
    int a = sc.nextInt();
    int b = sc.nextInt();
    n -= (a + b + 1);
    int t = 1;

    pw.print(t + " ");
    while (b > 0) { t *= 2; pw.print(t + " "); b--; }
    while (a > 0) { t++; pw.print(t + " "); a--; }
    while (n > 0) { pw.print(t + " "); n--; }

    pw.println();

    return pw;
  }

  private Scanner sc = new Scanner(new BufferedInputStream(System.in));
  private PrintWriter pw = new PrintWriter(new BufferedOutputStream(System.out));

  public static void main(String[] args) throws Exception {
    new P148C().run().close();
  }
}


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

public class P148C {

  private enum TODO { AH, OGO, NOTHING; };

  public PrintWriter run() {
    int n = sc.nextInt();
    int a = sc.nextInt();
    int b = sc.nextInt();

    int t = 1;
    int s = 1;
    String retStr = "1 ";

    for (int i = 1; i < n; i++) {
      TODO todo = TODO.NOTHING;

      if (b > 0) { todo = TODO.OGO; }
      if ((a > 0) && (todo == TODO.NOTHING) && ((t + 1) < (s * 2))) { todo = TODO.AH; }

      switch (todo) {
        case OGO : s *= 2; t = s; b--; break;
        case AH  : t++; a--; break;
        default : s += t; break;
      }

      retStr += (t + " ");
    }

    pw.println(((a == 0) && (b == 0)) ? retStr : "-1");

    return pw;
  }

  private Scanner sc = new Scanner(new BufferedInputStream(System.in));
  private PrintWriter pw = new PrintWriter(new BufferedOutputStream(System.out));

  public static void main(String[] args) throws Exception {
    new P148C().run().close();
  }
}


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

public class P148C {

  public PrintWriter run() {
    int n = sc.nextInt();
    int a = sc.nextInt();
    int b = sc.nextInt();
    n -= (a + b + 1);
    int t = 1;

    if ((a > 0) && (b == 0)) {
      pw.print(-1);
      return pw;
    }

    pw.print(t + " ");
    while (b > 0) { t *= 2; pw.print(t + " "); b--; }
    while (a > 0) { t++; pw.print(t + " "); a--; }
    while (n > 0) { pw.print(t + " "); n--; }

    pw.println();

    return pw;
  }

  private Scanner sc = new Scanner(new BufferedInputStream(System.in));
  private PrintWriter pw = new PrintWriter(new BufferedOutputStream(System.out));

  public static void main(String[] args) throws Exception {
    new P148C().run().close();
  }
}


import java.util.Scanner;
import java.io.OutputStream;
import java.io.IOException;
import java.io.PrintWriter;
import java.io.InputStream;

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

class TaskC {
	public void solve(int testNumber, Scanner in, PrintWriter out) {
        int n=in.nextInt(),a=in.nextInt(),b=in.nextInt(),i,sum=3;
        int ar[]=new int[n];
        ar[0]=2;
        if(n==1)
        {
            out.println(2);
            return;
        }
        if(b==0)
        {

            if(a==n-1){
            out.println(-1);
            return; }
        }

        for(i=1;i<=b;i++)
        {
            if(i==1)
                ar[i]=3;
            else
            ar[i]=2*ar[i-1];
        }
        boolean st=false;
        if(b==0&&a>=1)
        {
           ar[1]=1;
            ar[2]=3;
            for(i=3;i<2+a;i++)
                ar[i]=ar[i-1]+1;
            st=true;
        }
        else
        {
         for(i=b+1;i<a+b+1;i++)
         {

             ar[i]=ar[i-1]+1;
         } }
        int k=0;
        if(st)
            k=1;
        for(i=1+a+b+k;i<n;i++)
            ar[i]=1;
        for(i=0;i<n;i++)
        {
            if(i<n-1)
                out.print(ar[i]+" ");
            else out.println(ar[i]);
        }
	}
}


import java.util.Scanner;
import java.io.OutputStream;
import java.io.IOException;
import java.io.PrintWriter;
import java.io.InputStream;

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

class TaskC {
	public void solve(int testNumber, Scanner in, PrintWriter out) {
        int n=in.nextInt(),a=in.nextInt(),b=in.nextInt(),i,sum=4;
        int ar[]=new int[n];
        ar[0]=4;
        if(n==2&&a==1)
        {
            out.println(-1);
            return;
        }

        for(i=1;i<=b;i++)
        {
            if(i==1)
                ar[i]=5;
            else
            ar[i]=2*ar[i-1];
        }
         for(i=b+1;i<=a+b+1;i++)
         {
             ar[i]=ar[i-1]+1;
         }
        for(i=1+a+b;i<n;i++)
            ar[i]=1;
        for(i=0;i<n;i++)
        {
            if(i<n-1)
                out.print(ar[i]+" ");
            else out.println(ar[i]);
        }
	}
}


import java.util.Scanner;
import java.io.OutputStream;
import java.io.IOException;
import java.io.PrintWriter;
import java.io.InputStream;

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

class TaskC {
	public void solve(int testNumber, Scanner in, PrintWriter out) {
        int n=in.nextInt(),a=in.nextInt(),b=in.nextInt(),i,sum=4;
        int ar[]=new int[n];
        ar[0]=4;
        if(n==2&&a==1)
        {
            out.println(-1);
            return;
        }

        for(i=1;i<=b;i++)
        {
            if(i==1)
                ar[i]=5;
            else
            ar[i]=2*ar[i-1];
        }
         for(i=b+1;i<a+b+1;i++)
         {
             ar[i]=ar[i-1]+1;
         }
        for(i=1+a+b;i<n;i++)
            ar[i]=1;
        for(i=0;i<n;i++)
        {
            if(i<n-1)
                out.print(ar[i]+" ");
            else out.println(ar[i]);
        }
	}
}


import java.util.Scanner;
import java.io.OutputStream;
import java.io.IOException;
import java.io.PrintWriter;
import java.io.InputStream;

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

class TaskC {
	public void solve(int testNumber, Scanner in, PrintWriter out) {
        int n=in.nextInt(),a=in.nextInt(),b=in.nextInt(),i,sum=1;
        int ar[]=new int[n];
        ar[0]=1;
        for(i=1;i<=a;i++)
        {
            ar[i]=ar[i-1]+1;
            sum +=ar[i] ;
        }
         for(i=1;i<=b;i++)
         {
             ar[i+a]=sum+1;
             sum+=ar[i+a];
         }
        for(i=1+a+b;i<n;i++)
            ar[i]=1;
        for(i=0;i<n;i++)
        {
            if(i<n-1)
                out.print(ar[i]+" ");
            else out.println(ar[i]);
        }
	}
}


import java.util.Scanner;
import java.io.OutputStream;
import java.io.IOException;
import java.io.PrintWriter;
import java.io.InputStream;

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

class TaskC {
	public void solve(int testNumber, Scanner in, PrintWriter out) {
        int n=in.nextInt(),a=in.nextInt(),b=in.nextInt(),i,sum=3;
        int ar[]=new int[n];
        ar[0]=2;
        if(b==0)
        {
            if(a==n-1){
            out.println(-1);
            return; }
        }

        for(i=1;i<=b;i++)
        {
            if(i==1)
                ar[i]=3;
            else
            ar[i]=2*ar[i-1];
        }
        boolean st=false;
        if(b==0&&a>=1)
        {
           ar[1]=1;
            ar[2]=3;
            for(i=3;i<2+a;i++)
                ar[i]=ar[i-1]+1;
            st=true;
        }
        else
        {
         for(i=b+1;i<a+b+1;i++)
         {

             ar[i]=ar[i-1]+1;
         } }
        int k=0;
        if(st)
            k=1;
        for(i=1+a+b+k;i<n;i++)
            ar[i]=1;
        for(i=0;i<n;i++)
        {
            if(i<n-1)
                out.print(ar[i]+" ");
            else out.println(ar[i]);
        }
	}
}


import java.util.Scanner;
import java.io.OutputStream;
import java.io.IOException;
import java.io.PrintWriter;
import java.io.InputStream;

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

class TaskC {
	public void solve(int testNumber, Scanner in, PrintWriter out) {
        int n=in.nextInt(),a=in.nextInt(),b=in.nextInt(),i,sum=3;
        int ar[]=new int[n];
        ar[0]=2;
        if(n==2&&a==1)
        {
            out.println(-1);
            return;
        }

        for(i=1;i<=b;i++)
        {
            if(i==1)
                ar[i]=3;
            else
            ar[i]=2*ar[i-1];
        }
        boolean st=false;
        if(b==0&&a>=1)
        {
           ar[1]=1;
            ar[2]=3;
            for(i=3;i<2+a;i++)
                ar[i]=ar[i-1]+1;
            st=true;
        }
        else
        {
         for(i=b+1;i<a+b+1;i++)
         {

             ar[i]=ar[i-1]+1;
         } }
        int k=0;
        if(st)
            k=1;
        for(i=1+a+b+k;i<n;i++)
            ar[i]=1;
        for(i=0;i<n;i++)
        {
            if(i<n-1)
                out.print(ar[i]+" ");
            else out.println(ar[i]);
        }
	}
}


import java.util.Scanner;
import java.io.OutputStream;
import java.io.IOException;
import java.io.PrintWriter;
import java.io.InputStream;

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

class TaskC {
	public void solve(int testNumber, Scanner in, PrintWriter out) {
        int n=in.nextInt(),a=in.nextInt(),b=in.nextInt(),i,sum=3;
        int ar[]=new int[n];
        ar[0]=2;
        if(n==2&&a==1)
        {
            out.println(-1);
            return;
        }

        for(i=1;i<=b;i++)
        {
            if(i==1)
                ar[i]=3;
            else
            ar[i]=2*ar[i-1];
        }
         for(i=b+1;i<a+b+1;i++)
         {
             ar[i]=ar[i-1]+1;
         }
        for(i=1+a+b;i<n;i++)
            ar[i]=1;
        for(i=0;i<n;i++)
        {
            if(i<n-1)
                out.print(ar[i]+" ");
            else out.println(ar[i]);
        }
	}
}


import java.util.Scanner;

/**
 * Created by IntelliJ IDEA.
 * User: mihai
 * Date: 2/2/12
 * Time: 4:42 PM
 */
public class div2105C
{
        public static void main(String[] args)
        {
            Scanner sc = new Scanner(System.in);

            int N, a, b; boolean ok = true;
            N = sc.nextInt();
            a = sc.nextInt();
            b = sc.nextInt();

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

            int a1 = 0, b1 = 0, last, afisez;
            int sum = 1;
            System.out.print(1 + " ");
            last = 1;

            for (int i = 1; i < N; i++)
            {
                afisez = 0;
                if ( b1 < b) { afisez = sum + 1; b1++; }
                else if (a1 < a) { afisez = last + 1; a1++; }
                else afisez = last;

                if (i == 1 && b == 0) { afisez = 1; a1--; }

                System.out.print(afisez + " ");
                sum += afisez;
                last = afisez;
            }

        }
}


import java.util.Scanner;

/**
 * Created by IntelliJ IDEA.
 * User: mihai
 * Date: 2/2/12
 * Time: 4:42 PM
 */
public class div2105C
{
        public static void main(String[] args)
        {
            Scanner sc = new Scanner(System.in);

            int N, a, b; boolean ok = true;
            N = sc.nextInt();
            a = sc.nextInt();
            b = sc.nextInt();

            int a1 = 0, b1 = 0, last, afisez;
            int sum = 1;
            System.out.print(1 + " ");
            last = 1;

            for (int i = 1; i < N; i++)
            {
                afisez = 0;
                if ( b1 < b) { afisez = sum + 1; b1++; }
                else if (a1 < a) { afisez = last + 1; a1++; }
                else afisez = last;

                System.out.print(afisez + " ");
                sum += afisez;
                last = afisez;
            }

        }
}


import java.util.Scanner;

/**
 * Created by IntelliJ IDEA.
 * User: mihai
 * Date: 2/2/12
 * Time: 4:42 PM
 */
public class div2105C
{
        public static void main(String[] args)
        {
            Scanner sc = new Scanner(System.in);

            int N, a, b; boolean ok = true;
            N = sc.nextInt();
            a = sc.nextInt();
            b = sc.nextInt();

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

            int a1 = 0, b1 = 0, last, afisez;
            int sum = 1;
            System.out.print(1 + " ");
            last = 1;

            for (int i = 1; i < N; i++)
            {
                afisez = 0;
                if ( b1 < b) { afisez = sum + 1; b1++; }
                else if (a1 < a) { afisez = last + 1; a1++; }
                else afisez = last;

                if (i == 1 && b == 0 && a1 > 0) { afisez = 1; a1--; }

                System.out.print(afisez + " ");
                sum += afisez;
                last = afisez;
            }

        }
}


import java.util.Scanner;

/**
 * Created by IntelliJ IDEA.
 * User: mihai
 * Date: 2/2/12
 * Time: 4:42 PM
 */
public class div2105C
{
        public static void main(String[] args)
        {
            Scanner sc = new Scanner(System.in);

            int N, a, b;
            N = sc.nextInt();
            a = sc.nextInt();
            b = sc.nextInt();

            int a1 = 0, b1 = 0, last, afisez;
            int sum = 1;
            System.out.print(1 + " ");
            last = 1;

            for (int i = 1; i < N; i++)
            {
                afisez = 0;
                if ( b1 < b) { afisez = sum + 1; b1++; }
                else if (a1 < a) { afisez = last + 1; a1++; }
                else afisez = last;

                System.out.print(afisez + " ");
                sum += afisez;
                last = afisez;
            }
        }
}


import java.util.Scanner;

/**
 * Created by IntelliJ IDEA.
 * User: mihai
 * Date: 2/2/12
 * Time: 4:42 PM
 */
public class div2105C
{
        public static void main(String[] args)
        {
            Scanner sc = new Scanner(System.in);

            int N, a, b; boolean ok = true;
            N = sc.nextInt();
            a = sc.nextInt();
            b = sc.nextInt();

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

            int a1 = 0, b1 = 0, last, afisez;
            int sum = 1;
            System.out.print(1 + " ");
            last = 1;

            for (int i = 1; i < N; i++)
            {
                afisez = 0;
                if ( b1 < b) { afisez = sum + 1; b1++; }
                else if (a1 < a) { afisez = last + 1; a1++; }
                else afisez = last;

                System.out.print(afisez + " ");
                sum += afisez;
                last = afisez;
            }

        }
}


import java.util.Scanner;

/**
 * Created by IntelliJ IDEA.
 * User: mihai
 * Date: 2/2/12
 * Time: 4:42 PM
 */
public class div2105C
{
        public static void main(String[] args)
        {
            Scanner sc = new Scanner(System.in);

            int N, a, b; boolean ok = true;
            N = sc.nextInt();
            a = sc.nextInt();
            b = sc.nextInt();

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

            int a1 = 0, b1 = 0, last, afisez;
            int sum = 1;
            System.out.print(1 + " ");
            last = 1;

            for (int i = 1; i < N; i++)
            {
                afisez = 0;
                if ( b1 < b) { afisez = sum + 1; b1++; }
                else if (a1 < a) { afisez = last + 1; a1++; }
                else afisez = last;

                if (i == 1 && b == 0 && a1 > 0) { afisez = 1; a1--; }

                System.out.print(afisez + " ");
                sum += afisez;
                last = afisez;
            }

        }
}


import java.util.Scanner;

public class CF_105_B {

    public static void main(String[] args){
        Scanner in = new Scanner(System.in);
        int n = in.nextInt(), a = in.nextInt(), b = in.nextInt();
        int[] x = new int[1000];
        int sum = 0;
        x[1] = 1;
        for (int i = 2; i <= b + 1; i++) {
            x[i] = x[i - 1] * 2;
            if (x[i] > 50000){
                System.out.println(-1);
                System.exit(0);
            }
        }

        for (int i = 1; i <= a; i++) {
            x[b + 1 + i] = x[b + i] + 1;
            if (x[b + i + 1] > 50000 || b + i + 1> n){
                System.out.println(-1);
                System.exit(0);
            }
        }

        for (int i = b + a + 2; i <= n; i++) {
            x[i] = 1;
        }

        for (int i = 1; i <= n; i++)
            System.out.print(x[i]+" ");

    }
}


import java.util.Scanner;

public class CF_105_B {

    public static void main(String[] args){
        Scanner in = new Scanner(System.in);
        int n = in.nextInt(), a = in.nextInt(), b = in.nextInt();
        int[] x = new int[n + 1];
        int sum = 0;
        for (int i = 1; i <= a + 2; i++) {
            if (i == 1) x[i] = 1; else  x[i] = i - 1;
            sum += x[i];
            if (sum > 50000){
                System.out.println(-1);
                System.exit(0);
            }
        }
        for (int i = a + 3; i < a + 3 + b; i++) {
            x[i] = sum + 1;
            sum += x[i];
            if (sum > 50000){
                System.out.println(-1);
                System.exit(0);
            }
        }
        for (int i = a + b + 3; i <= n; i++) {
            x[i] = 1;
        }

        for (int i = 1; i <= n; i++)
            System.out.print(x[i]+" ");

    }
}


import java.util.Scanner;

public class CF_105_B {

    public static void main(String[] args){
        Scanner in = new Scanner(System.in);
        int n = in.nextInt(), a = in.nextInt(), b = in.nextInt();
        int[] x = new int[1000];
        int sum = 0;
        x[1] = 1;
        for (int i = 2; i <= b + 1; i++) {
            x[i] = x[i - 1] * 2;
            if (x[i] > 50000){
                System.out.println(-1);
                System.exit(0);
            }
        }

        for (int i = 1; i <= a; i++) {
            x[b + 1 + i] = x[b + i] + 1;
            if (x[i] > 50000 || b + i + 1> n){
                System.out.println(-1);
                System.exit(0);
            }
        }

        for (int i = b + a + 2; i <= n; i++) {
            x[i] = 1;
        }

        for (int i = 1; i <= n; i++)
            System.out.print(x[i]+" ");

    }
}


import java.util.Scanner;

public class CF_105_B {

    public static void main(String[] args){
        Scanner in = new Scanner(System.in);
        int n = in.nextInt(), a = in.nextInt(), b = in.nextInt();
        int[] x = new int[1000];
        int sum = 0, d = 0;
        x[1] = 1;

        for (int i = 2; i <= b + 1; i++) {
            x[i] = x[i - 1] * 2;
            if (x[i] > 50000){
                System.out.println(-1);
                System.exit(0);
            }
        }
        if (b == 0) {
        	d = 1;
        	x[2] = 1;
        }
    	for (int i = 1; i <= a; i++) {
    		x[b + 1 + i + d] = x[b + i + d] + 1;
    		if (x[b + i + 1 + d] > 50000 || b + i + 1 + d> n){
    			System.out.println(-1);
    			System.exit(0);
    		}
    	}

        for (int i = 1; i <= n; i++)
            System.out.print(x[i]+" ");

    }
}


import java.util.Scanner;

public class CF_105_B {

    public static void main(String[] args){
        Scanner in = new Scanner(System.in);
        int n = in.nextInt(), a = in.nextInt(), b = in.nextInt();
        int[] x = new int[1000];
        int sum = 0;
        for (int i = 1; i <= a + 2; i++) {
            if (i == 1) x[i] = 1; else  x[i] = i - 1;
            sum += x[i];
            if (sum > 50000){
                System.out.println(-1);
                System.exit(0);
            }
        }
        for (int i = a + 3; i < a + 3 + b; i++) {
            x[i] = sum + 1;
            sum += x[i];
            if (sum > 50000){
                System.out.println(-1);
                System.exit(0);
            }
        }
        for (int i = a + b + 3; i <= n; i++) {
            x[i] = 1;
        }

        for (int i = 1; i <= n; i++)
            System.out.print(x[i]+" ");

    }
}


import java.util.Scanner;

public class CF_105_B {

    public static void main(String[] args){
        Scanner in = new Scanner(System.in);
        int n = in.nextInt(), a = in.nextInt(), b = in.nextInt();
        int[] x = new int[n + 1];
        int sum = 0;
        for (int i = 1; i <= a + 1; i++) {
            x[i] = i;
            sum += i;
            if (sum > 50000){
                System.out.println(-1);
                System.exit(0);
            }
        }
        for (int i = a + 2; i < a + 2 + b; i++) {
            x[i] = sum + 1;
            sum += x[i];
            if (sum > 50000){
                System.out.println(-1);
                System.exit(0);
            }
        }
        for (int i = a + b + 2; i <= n; i++) {
            x[i] = 1;
        }

        for (int i = 1; i <= n; i++)
            System.out.print(x[i]+" ");

    }
}


import java.util.Scanner;

public class CF_105_B {

    public static void main(String[] args){
        Scanner in = new Scanner(System.in);
        int n = in.nextInt(), a = in.nextInt(), b = in.nextInt();
        int[] x = new int[n + 1];
        int sum = 0;
        for (int i = 1; i <= a + 1; i++) {
            if (i == 1) x[i] = 1; else  x[i] = i - 1;
            sum += x[i];
            if (sum > 50000){
                System.out.println(-1);
                System.exit(0);
            }
        }
        for (int i = a + 2; i < a + 2 + b; i++) {
            x[i] = sum + 1;
            sum += x[i];
            if (sum > 50000){
                System.out.println(-1);
                System.exit(0);
            }
        }
        for (int i = a + b + 2; i <= n; i++) {
            x[i] = 1;
        }

        for (int i = 1; i <= n; i++)
            System.out.print(x[i]+" ");

    }
}


import java.util.Scanner;

public class CF_105_B {

    public static void main(String[] args){
        Scanner in = new Scanner(System.in);
        int n = in.nextInt(), a = in.nextInt(), b = in.nextInt();
        int[] x = new int[1000];
        int sum = 0;
        x[1] = 1;
        for (int i = 2; i <= b; i++) {
            x[i] = x[i - 1] * 2;
            if (x[i] > 50000){
                System.out.println(-1);
                System.exit(0);
            }
        }

        for (int i = 1; i <= a; i++) {
            x[b + i] = x[b + i - 1] + 1;
            if (x[i] > 50000 || b + i > n){
                System.out.println(-1);
                System.exit(0);
            }
        }

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

        for (int i = 1; i <= n; i++)
            System.out.print(x[i]+" ");

    }
}


import java.util.Scanner;

public class CF_105_B {

    public static void main(String[] args){
        Scanner in = new Scanner(System.in);
        int n = in.nextInt(), a = in.nextInt(), b = in.nextInt();
        int[] x = new int[1000];
        int sum = 0, d = 0;
        x[1] = 1;

        for (int i = 2; i <= b + 1; i++) {
            x[i] = x[i - 1] * 2;
            if (x[i] > 50000){
                System.out.println(-1);
                System.exit(0);
            }
        }
        if (b == 0) {
        	d = 1;
        	x[2] = 1;
        }
    	for (int i = 1; i <= a; i++) {
    		x[b + 1 + i + d] = x[b + i + d] + 1;
    		if (x[b + i + 1 + d] > 50000 || b + i + 1 + d> n){
    			System.out.println(-1);
    			System.exit(0);
    		}
    	}

    	for (int i = d + b + a + 2; i <= n; i++) {
            x[i] = 1;
        }

        for (int i = 1; i <= n; i++)
            System.out.print(x[i]+" ");

    }
}


import java.util.Scanner;

public class CF_105_B {

    public static void main(String[] args){
        Scanner in = new Scanner(System.in);
        int n = in.nextInt(), a = in.nextInt(), b = in.nextInt();
        if (a+b+1 > n) {
            System.out.println(-1);
            System.exit(0);
        }
        for (int i = 1; i <= b; i++) System.out.print(i+" ");
        System.out.print(a+b+1+" ");
        for (int i = b + 1; i < a + b + 1; i++) System.out.print(i+" ");
        for (int i = a + b + 2; i <=n; i++)System.out.print(1+" ");
    }
}


import java.util.Scanner;

public class CF_105_B {

    public static void main(String[] args){
        Scanner in = new Scanner(System.in);
        int n = in.nextInt(), a = in.nextInt(), b = in.nextInt();
        int[] x = new int[1000];
        int sum = 0;
        for (int i = 1; i <= a + 2; i++) {
            if (i == 1) x[i] = 1; else  x[i] = i - 1;
            sum += x[i];
            if (sum > 50000){
                System.out.println(-1);
                System.exit(0);
            }
        }

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

        for (int i = a + 3; i < a + 3 + b; i++) {
            x[i] = sum + 1;
            sum += x[i];
            if (sum > 50000){
                System.out.println(-1);
                System.exit(0);
            }
        }
        for (int i = a + b + 3; i <= n; i++) {
            x[i] = 1;
        }

        for (int i = 1; i <= n; i++)
            System.out.print(x[i]+" ");

    }
}


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

public class C {

	public C () throws IOException {
		int n = sc.nextInt();
		int a = sc.nextInt();
		int b = sc.nextInt();
		start();
		solve(n, a, b);
	}

	public void solve (int n, int a, int b) {
		int [] G = new int [n];
		Arrays.fill(G, 1);

		if (b > 0) {
			for (int i = 1; i <= b; ++i)
				G[i] = 2*G[i-1];
			for (int i = b+1; i <= b+a; ++i)
				G[i] = G[i-1] + 1;
		} else if (a > 0) {
			try {
				G[1] = 1;
				for (int i = 1; i <= a; ++i)
					G[i+1] = G[i] + 1;
			} catch (ArrayIndexOutOfBoundsException e) {
				print(-1);
			}
		}

		StringBuffer buf = new StringBuffer();
		for (int g : G)
			buf.append(" " + g);
		print (buf.toString().trim());
	}

	////////////////////////////////////////////////////////////////////////////////////

	static Scanner sc;
	static long t;

	static void print2 (Object o) {
		System.out.println(o);
	}

	static void print (Object o) {
		print2(o);
		System.err.println((millis() - t) / 1000.0);
		System.exit(0);
	}

	static void run () throws IOException {
		sc = new Scanner(System.in);
		new C();
	}

	public static void main(String[] args) throws IOException {
		run();
	}

	static long millis() {
		return System.currentTimeMillis();
	}

	static void start() {
		t = millis();
	}
}


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

public class C {

	public C () throws IOException {
		int n = sc.nextInt();
		int a = sc.nextInt();
		int b = sc.nextInt();
		solve(n, a, b);
	}

	public void solve (int n, int a, int b) {
		C.t = millis();

		int [] G = new int [n];
		Arrays.fill(G, 1);

		if (b > 0) {
			G[0] = 1;
			for (int i = 1; i <= b; ++i)
				G[i] = 2*G[i-1];
			for (int i = 1; i <= a; ++i)
				G[b+i] = G[b+i-1] + 1;
		} else if (a > 0) {
			if (n <= a+1)
				print(-1);
			G[0] = 1; G[1] = 1;
			for (int i = 1; i <= a; ++i)
				G[i+1] = G[i] + 1;
		}

		StringBuffer buf = new StringBuffer();
		for (int g : G)
			buf.append(" " + g);
		print (buf.toString().trim());
	}

	////////////////////////////////////////////////////////////////////////////////////

	static Scanner sc;
	static long t;

	static void print2 (Object o) {
		System.out.println(o);
	}

	static void print (Object o) {
		print2(o);
		//print2((millis() - t) / 1000.0);
		System.exit(0);
	}

	static void run () throws IOException {
		sc = new Scanner(System.in);
		new C();
	}

	public static void main(String[] args) throws IOException {
		run();
	}

	static long millis() {
		return System.currentTimeMillis();
	}
}


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

public class C {

	public C () throws IOException {
		int n = sc.nextInt();
		int a = sc.nextInt();
		int b = sc.nextInt();
		solve(n, a, b);
	}

	public void solve (int n, int a, int b) {
		B.t = millis();

		int [] G = new int [n];
		Arrays.fill(G, 1);

		if (b > 0) {
			G[0] = 1;
			for (int i = 1; i <= b; ++i)
				G[i] = 2*G[i-1];
			for (int i = 1; i <= a; ++i)
				G[b+i] = G[b+i-1] + 1;
		} else if (a > 0) {
			if (n <= a+1)
				print(-1);
			G[0] = 2; G[1] = 2;
			for (int i = 1; i <= a; ++i)
				G[i+1] = G[i] + 1;
		}

		StringBuffer buf = new StringBuffer();
		for (int g : G)
			buf.append(" " + g);
		print (buf.toString().trim());
	}

	////////////////////////////////////////////////////////////////////////////////////

	static Scanner sc;
	static long t;

	static void print2 (Object o) {
		System.out.println(o);
	}

	static void print (Object o) {
		print2(o);
		//print2((millis() - t) / 1000.0);
		System.exit(0);
	}

	static void run () throws IOException {
		sc = new Scanner(System.in);
		new C();
	}

	public static void main(String[] args) throws IOException {
		run();
	}

	static long millis() {
		return System.currentTimeMillis();
	}
}


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

public class C {

	public C () throws IOException {
		int n = sc.nextInt();
		int a = sc.nextInt();
		int b = sc.nextInt();
		solve(n, a, b);
	}

	public void solve (int n, int a, int b) {
		C.t = millis();

		int [] G = new int [n];
		Arrays.fill(G, 1);

		if (b > 0) {
			G[0] = 1;
			for (int i = 1; i <= b; ++i)
				G[i] = 2*G[i-1];
			for (int i = 1; i <= a; ++i)
				G[b+i] = G[b+i-1] + 1;
		} else if (a > 0) {
			if (n <= a+1)
				print(-1);
			G[0] = 2; G[1] = 2;
			for (int i = 1; i <= a; ++i)
				G[i+1] = G[i] + 1;
		}

		StringBuffer buf = new StringBuffer();
		for (int g : G)
			buf.append(" " + g);
		print (buf.toString().trim());
	}

	////////////////////////////////////////////////////////////////////////////////////

	static Scanner sc;
	static long t;

	static void print2 (Object o) {
		System.out.println(o);
	}

	static void print (Object o) {
		print2(o);
		//print2((millis() - t) / 1000.0);
		System.exit(0);
	}

	static void run () throws IOException {
		sc = new Scanner(System.in);
		new C();
	}

	public static void main(String[] args) throws IOException {
		run();
	}

	static long millis() {
		return System.currentTimeMillis();
	}
}


import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.InputStreamReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.util.StringTokenizer;

public class C105P3 {

    private static BufferedReader in;
    private static PrintWriter out;
    private static StringTokenizer input;

    public static void main(String[] args) throws IOException {
        //-------------------------------------------------------------------------
        //Initializing...
        new C105P3();
        //-------------------------------------------------------------------------
        //put your code here... :)
        int n = nextInt();
        int a = nextInt();
        int b = nextInt();
        if(b==0&&n-1==a){writeln("-1");return;}
        int [] grooms = new int[n];
        grooms[0]=1;
        int sum=1;
        for (int i = 1; i <= b; i++) {
            grooms[i]=sum+1;
            sum+=grooms[i];
        }
        if(b==0){
            b=1;
            grooms[1]=1;
        }
        for (int i = 1; i <= a; i++) {
            grooms[i+b]=grooms[i+b-1]+1;
        }
        for (int i = a+b+1; i < grooms.length; i++) {
            grooms[i]=1;
        }
        for (int i = 0; i < grooms.length; i++) {
            write(grooms[i]+((i==n)?"\n":" "));
        }
        //-------------------------------------------------------------------------
        //closing up
        end();
        //--------------------------------------------------------------------------

    }
    public C105P3() throws IOException {
        //Input Output for Console to be used for trying the test samples of the problem
        in = new BufferedReader(new InputStreamReader(System.in));
        out = new PrintWriter(System.out);
        //-------------------------------------------------------------------------
        //Initalize Stringtokenizer input
        input = new StringTokenizer(in.readLine());
    }

    private static int nextInt() throws IOException {
        if (!input.hasMoreTokens())input=new StringTokenizer(in.readLine());
        return Integer.parseInt(input.nextToken());
    }
    private static long nextLong() throws IOException {
        if (!input.hasMoreTokens())input=new StringTokenizer(in.readLine());
        return Long.parseLong(input.nextToken());
    }
    private static double nextDouble() throws IOException {
        if (!input.hasMoreTokens())input=new StringTokenizer(in.readLine());
        return Double.parseDouble(input.nextToken());
    }
    private static String nextString() throws IOException {
        if (!input.hasMoreTokens())input=new StringTokenizer(in.readLine());
        return input.nextToken();
    }
    private static void write(String output){
        out.write(output);
        out.flush();
    }
    private static void writeln(String output){
        out.write(output+"\n");
        out.flush();
    }
    private static void end() throws IOException{
        in.close();
        out.close();
        System.exit(0);
    }

}


import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.InputStreamReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.util.StringTokenizer;

public class C105P3 {

    private static BufferedReader in;
    private static PrintWriter out;
    private static StringTokenizer input;

    public static void main(String[] args) throws IOException {
        //-------------------------------------------------------------------------
        //Initializing...
        new C105P3();
        //-------------------------------------------------------------------------
        //put your code here... :)
        int n = nextInt();
        int a = nextInt();
        int b = nextInt();
        if(n==1){writeln("1");return;}
        if(b==0&&n-1==a){writeln("-1");return;}
        int [] grooms = new int[n];
        grooms[0]=1;
        int sum=1;
        for (int i = 1; i <= b; i++) {
            grooms[i]=sum+1;
            sum+=grooms[i];
        }
        if(b==0){
            b=1;
            grooms[1]=1;
        }
        for (int i = 1; i <= a; i++) {
            grooms[i+b]=grooms[i+b-1]+1;
        }
        for (int i = a+b+1; i < grooms.length; i++) {
            grooms[i]=1;
        }
        for (int i = 0; i < grooms.length; i++) {
            write(grooms[i]+((i+1==n)?"\n":" "));
        }
        //-------------------------------------------------------------------------
        //closing up
        end();
        //--------------------------------------------------------------------------

    }
    public C105P3() throws IOException {
        //Input Output for Console to be used for trying the test samples of the problem
        in = new BufferedReader(new InputStreamReader(System.in));
        out = new PrintWriter(System.out);
        //-------------------------------------------------------------------------
        //Initalize Stringtokenizer input
        input = new StringTokenizer(in.readLine());
    }

    private static int nextInt() throws IOException {
        if (!input.hasMoreTokens())input=new StringTokenizer(in.readLine());
        return Integer.parseInt(input.nextToken());
    }
    private static long nextLong() throws IOException {
        if (!input.hasMoreTokens())input=new StringTokenizer(in.readLine());
        return Long.parseLong(input.nextToken());
    }
    private static double nextDouble() throws IOException {
        if (!input.hasMoreTokens())input=new StringTokenizer(in.readLine());
        return Double.parseDouble(input.nextToken());
    }
    private static String nextString() throws IOException {
        if (!input.hasMoreTokens())input=new StringTokenizer(in.readLine());
        return input.nextToken();
    }
    private static void write(String output){
        out.write(output);
        out.flush();
    }
    private static void writeln(String output){
        out.write(output+"\n");
        out.flush();
    }
    private static void end() throws IOException{
        in.close();
        out.close();
        System.exit(0);
    }

}


import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.InputStreamReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.util.StringTokenizer;

public class C105P3 {

    private static BufferedReader in;
    private static PrintWriter out;
    private static StringTokenizer input;

    public static void main(String[] args) throws IOException {
        //-------------------------------------------------------------------------
        //Initializing...
        new C105P3();
        //-------------------------------------------------------------------------
        //put your code here... :)
        int n = nextInt();
        int a = nextInt();
        int b = nextInt();
        int [] grooms = new int[n];
        grooms[0]=1;
        int sum=1;
        for (int i = 1; i <= b; i++) {
            grooms[i]=sum+1;
            sum+=grooms[i];
        }
        for (int i = 1; i <= a; i++) {
            grooms[i+b]=grooms[i+b-1]+1;
        }
        for (int i = a+b+1; i < grooms.length; i++) {
            grooms[i]=1;
        }
        for (int i = 0; i < grooms.length; i++) {
            write(grooms[i]+((i==n)?"\n":" "));
        }
        //-------------------------------------------------------------------------
        //closing up
        end();
        //--------------------------------------------------------------------------

    }
    public C105P3() throws IOException {
        //Input Output for Console to be used for trying the test samples of the problem
        in = new BufferedReader(new InputStreamReader(System.in));
        out = new PrintWriter(System.out);
        //-------------------------------------------------------------------------
        //Initalize Stringtokenizer input
        input = new StringTokenizer(in.readLine());
    }

    private static int nextInt() throws IOException {
        if (!input.hasMoreTokens())input=new StringTokenizer(in.readLine());
        return Integer.parseInt(input.nextToken());
    }
    private static long nextLong() throws IOException {
        if (!input.hasMoreTokens())input=new StringTokenizer(in.readLine());
        return Long.parseLong(input.nextToken());
    }
    private static double nextDouble() throws IOException {
        if (!input.hasMoreTokens())input=new StringTokenizer(in.readLine());
        return Double.parseDouble(input.nextToken());
    }
    private static String nextString() throws IOException {
        if (!input.hasMoreTokens())input=new StringTokenizer(in.readLine());
        return input.nextToken();
    }
    private static void write(String output){
        out.write(output);
        out.flush();
    }
    private static void writeln(String output){
        out.write(output+"\n");
        out.flush();
    }
    private static void end() throws IOException{
        in.close();
        out.close();
        System.exit(0);
    }

}


import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.InputStreamReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.util.StringTokenizer;

public class C105P3 {

    private static BufferedReader in;
    private static PrintWriter out;
    private static StringTokenizer input;

    public static void main(String[] args) throws IOException {
        //-------------------------------------------------------------------------
        //Initializing...
        new C105P3();
        //-------------------------------------------------------------------------
        //put your code here... :)
        int n = nextInt();
        int a = nextInt();
        int b = nextInt();
        int [] grooms = new int[n];
        grooms[0]=1;
        int sum=1;
        for (int i = 1; i <= b; i++) {
            grooms[i]=sum+1;
            sum+=grooms[i];
        }
        for (int i = 1; i <= a; i++) {
            grooms[i+b]=grooms[i+b-1]+1;
        }
        for (int i = a+b+1; i < grooms.length; i++) {
            grooms[i]=grooms[i-1];
        }
        for (int i = 0; i < grooms.length; i++) {
            write(grooms[i]+((i==n)?"\n":" "));
        }
        //-------------------------------------------------------------------------
        //closing up
        end();
        //--------------------------------------------------------------------------

    }
    public C105P3() throws IOException {
        //Input Output for Console to be used for trying the test samples of the problem
        in = new BufferedReader(new InputStreamReader(System.in));
        out = new PrintWriter(System.out);
        //-------------------------------------------------------------------------
        //Initalize Stringtokenizer input
        input = new StringTokenizer(in.readLine());
    }

    private static int nextInt() throws IOException {
        if (!input.hasMoreTokens())input=new StringTokenizer(in.readLine());
        return Integer.parseInt(input.nextToken());
    }
    private static long nextLong() throws IOException {
        if (!input.hasMoreTokens())input=new StringTokenizer(in.readLine());
        return Long.parseLong(input.nextToken());
    }
    private static double nextDouble() throws IOException {
        if (!input.hasMoreTokens())input=new StringTokenizer(in.readLine());
        return Double.parseDouble(input.nextToken());
    }
    private static String nextString() throws IOException {
        if (!input.hasMoreTokens())input=new StringTokenizer(in.readLine());
        return input.nextToken();
    }
    private static void write(String output){
        out.write(output);
        out.flush();
    }
    private static void writeln(String output){
        out.write(output+"\n");
        out.flush();
    }
    private static void end() throws IOException{
        in.close();
        out.close();
        System.exit(0);
    }

}


import java.io.*;
import java.lang.Math;
import java.util.*;

public class Main
{
	public BufferedReader in;
	public PrintStream out;

	public void test()
	{
		int n = readInt();
		int a = readInt();
		int b = readInt();

		if (n==1)
		{
			out.println(717);
			return;
		}

		int i,k;

		if (b==0)
		{
			out.print(k=2);

			for (i=0; i<a;i++)
			{
				out.print(" ");
				out.print(++k);
			}

			for (i=a;i<n-1;i++)
			{
				out.print(" ");
				out.print(k);
			}
		}
		else
		{
			out.print(k=1);

			for (i=0; i<b;i++)
			{
				out.print(" ");
				k*=2;
				out.print(k);
			}

			for (i=0; i<a;i++)
			{
				out.print(" ");
				out.print(++k);
			}

			for (i=a+b;i<n-1;i++)
			{
				out.print(" ");
				out.print(k);
			}
		}

		out.println();
	}

	public void run()
	{
		try
		{
			in = new BufferedReader(new InputStreamReader(System.in));
			out = System.out;

			//in = new BufferedReader(new FileReader("in.txt"));
			//out = new PrintStream(new File("out.txt"));

		}
		catch (Exception e)
		{
			return;
		}

		//while (true)
		{
			//int t = readInt(); for (int i=0; i<t; i++)
			{
				test();
			}
		}
	}

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

	private StringTokenizer tokenizer = null;

	public int readInt()
	{
        return Integer.parseInt(readToken());
    }

    public long readLong()
	{
        return Long.parseLong(readToken());
    }

    public double readDouble()
	{
        return Double.parseDouble(readToken());
    }

	public String readLn()
	{
		try
		{
			String s;
			while ((s = in.readLine()).length()==0);
			return s;
		}
		catch (Exception e)
		{
			return "";
		}
	}

    public String readToken()
	{
		try
		{
			while (tokenizer == null || !tokenizer.hasMoreTokens())
			{
				tokenizer = new StringTokenizer(in.readLine());
			}
			return tokenizer.nextToken();
		}
		catch (Exception e)
		{
			return "";
		}
    }

	public int[] readIntArray(int n)
	{
		int[] x = new int[n];
		readIntArray(x, n);
		return x;
	}

	public void readIntArray(int[] x, int n)
	{
		for (int i=0; i<n; i++)
		{
			x[i] = readInt();
		}
	}
}


import java.io.*;
import java.lang.Math;
import java.util.*;

public class Main
{
	public BufferedReader in;
	public PrintStream out;

	public void test()
	{
		int n = readInt();
		int a = readInt();
		int b = readInt();

		if (n==1)
		{
			out.println(717);
			return;
		}

		int i,k;

		if (b==0)
		{
			out.print(k=2);

			for (i=0; i<a;i++)
			{
				out.print(" ");
				out.print(++k);
			}

			for (i=a;i<n;i++)
			{
				out.print(" ");
				out.print(k);
			}
		}
		else
		{
			out.print(k=1);

			for (i=0; i<b;i++)
			{
				out.print(" ");
				k*=2;
				out.print(k);
			}

			for (i=0; i<a;i++)
			{
				out.print(" ");
				out.print(++k);
			}

			for (i=a;i<n;i++)
			{
				out.print(" ");
				out.print(k);
			}
		}

		out.println();
	}

	public void run()
	{
		try
		{
			in = new BufferedReader(new InputStreamReader(System.in));
			out = System.out;

			//in = new BufferedReader(new FileReader("in.txt"));
			//out = new PrintStream(new File("out.txt"));

		}
		catch (Exception e)
		{
			return;
		}

		//while (true)
		{
			//int t = readInt(); for (int i=0; i<t; i++)
			{
				test();
			}
		}
	}

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

	private StringTokenizer tokenizer = null;

	public int readInt()
	{
        return Integer.parseInt(readToken());
    }

    public long readLong()
	{
        return Long.parseLong(readToken());
    }

    public double readDouble()
	{
        return Double.parseDouble(readToken());
    }

	public String readLn()
	{
		try
		{
			String s;
			while ((s = in.readLine()).length()==0);
			return s;
		}
		catch (Exception e)
		{
			return "";
		}
	}

    public String readToken()
	{
		try
		{
			while (tokenizer == null || !tokenizer.hasMoreTokens())
			{
				tokenizer = new StringTokenizer(in.readLine());
			}
			return tokenizer.nextToken();
		}
		catch (Exception e)
		{
			return "";
		}
    }

	public int[] readIntArray(int n)
	{
		int[] x = new int[n];
		readIntArray(x, n);
		return x;
	}

	public void readIntArray(int[] x, int n)
	{
		for (int i=0; i<n; i++)
		{
			x[i] = readInt();
		}
	}
}


import java.io.*;
import java.lang.Math;
import java.util.*;

public class Main
{
	public BufferedReader in;
	public PrintStream out;

	public void test()
	{
		int n = readInt();
		int a = readInt();
		int b = readInt();

		if (n==1)
		{
			out.println(717);
			return;
		}

		int i,k;

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

			out.print("1 1");

			k=1;
			for (i=0; i<a;i++)
			{
				out.print(" ");
				out.print(++k);
			}

			for (i=a;i<n-2;i++)
			{
				out.print(" ");
				out.print(k);
			}
		}
		else
		{
			out.print(k=1);

			for (i=0; i<b;i++)
			{
				out.print(" ");
				k*=2;
				out.print(k);
			}

			for (i=0; i<a;i++)
			{
				out.print(" ");
				out.print(++k);
			}

			for (i=a+b;i<n-1;i++)
			{
				out.print(" ");
				out.print(k);
			}
		}

		out.println();
	}

	public void run()
	{
		try
		{
			in = new BufferedReader(new InputStreamReader(System.in));
			out = System.out;

			//in = new BufferedReader(new FileReader("in.txt"));
			//out = new PrintStream(new File("out.txt"));

		}
		catch (Exception e)
		{
			return;
		}

		//while (true)
		{
			//int t = readInt(); for (int i=0; i<t; i++)
			{
				test();
			}
		}
	}

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

	private StringTokenizer tokenizer = null;

	public int readInt()
	{
        return Integer.parseInt(readToken());
    }

    public long readLong()
	{
        return Long.parseLong(readToken());
    }

    public double readDouble()
	{
        return Double.parseDouble(readToken());
    }

	public String readLn()
	{
		try
		{
			String s;
			while ((s = in.readLine()).length()==0);
			return s;
		}
		catch (Exception e)
		{
			return "";
		}
	}

    public String readToken()
	{
		try
		{
			while (tokenizer == null || !tokenizer.hasMoreTokens())
			{
				tokenizer = new StringTokenizer(in.readLine());
			}
			return tokenizer.nextToken();
		}
		catch (Exception e)
		{
			return "";
		}
    }

	public int[] readIntArray(int n)
	{
		int[] x = new int[n];
		readIntArray(x, n);
		return x;
	}

	public void readIntArray(int[] x, int n)
	{
		for (int i=0; i<n; i++)
		{
			x[i] = readInt();
		}
	}
}


import java.util.*;
public class cf148c {
  public static void main(String[] args) {
    Scanner in = new Scanner(System.in);
    int n = in.nextInt();
    int a = in.nextInt();
    int b = in.nextInt();
    long[] vals = new long[n];
    if(b == 0) {
      if(a == n-1) {
        System.out.println("-1");
      }
      else {
        Arrays.fill(vals,1);
        for(int i=1; i<=a; i++)
          vals[i+1] = i+1;
        for(int i=0; i<n; i++)
          System.out.print(vals[i] + " ");
      }
      return;
    }
    Arrays.fill(vals,1L);
    for(int i=1; i<=b; i++)
      vals[i] = 1<<i;
    for(int i=1; i<=a; i++)
      vals[b+i] = (1<<b) + i;
    for(int i=0; i<n; i++)
      System.out.print(vals[i]+" ");
  }
}


import java.util.*;
public class cf148c {
  public static void main(String[] args) {
    Scanner in = new Scanner(System.in);
    int n = in.nextInt();
    int a = in.nextInt();
    int b = in.nextInt();
    long[] vals = new long[n];
    if(b == 0) {
      if(a == n-1 && a > 0) {
        System.out.println("-1");
      }
      else {
        Arrays.fill(vals,1);
        for(int i=1; i<=a; i++)
          vals[i+1] = i+1;
        for(int i=0; i<n; i++)
          System.out.print(vals[i] + " ");
      }
      return;
    }
    Arrays.fill(vals,1L);
    for(int i=1; i<=b; i++)
      vals[i] = 1<<i;
    for(int i=1; i<=a; i++)
      vals[b+i] = (1<<b) + i;
    for(int i=0; i<n; i++)
      System.out.print(vals[i]+" ");
  }
}


import java.util.*;
public class cf148c {
  public static void main(String[] args) {
    Scanner in = new Scanner(System.in);
    int n = in.nextInt();
    int a = in.nextInt();
    int b = in.nextInt();
    long[] vals = new long[n];
    Arrays.fill(vals,1L);
    long sum = 1;
    for(int i=1; i<=a; i++)
      sum += (vals[i] = i+1);
    for(int i=1; i<=b; i++)
      sum += (vals[a+i] = sum+1);
    boolean bad = false;
    for(int i=0; i<n; i++)
      if(vals[i] > 50000)
        bad = true;
    if(bad) System.out.println(-1);
    else for(int i=0; i<n; i++)
      System.out.print(vals[i]+" ");
  }
}


import java.util.*;
public class cf148c {
  public static void main(String[] args) {
    Scanner in = new Scanner(System.in);
    int n = in.nextInt();
    int a = in.nextInt();
    int b = in.nextInt();
    long[] vals = new long[n];
    Arrays.fill(vals,1L);
    for(int i=1; i<=b; i++)
      vals[i] = 1<<i;
    if(b == 0) vals[0] = 2;
    for(int i=1; i<=a; i++)
      vals[b+i] = (1<<b) + i + (b==0?1:0);
    for(int i=0; i<n; i++)
      System.out.print(vals[i]+" ");
  }
}


import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.io.StreamTokenizer;

public class Main {
	static class Assert {
		static void check(boolean e) {
			if (!e) {
				throw new Error();
			}
		}
	}

	class Scanner {
		StreamTokenizer in;

		Scanner(InputStream is) {
			in = new StreamTokenizer(new InputStreamReader(is));
			in.resetSyntax();
			in.whitespaceChars(0, 32);
			in.wordChars(33, 255);
		}

		String next() {
			try {
				in.nextToken();
				Assert.check(in.ttype == in.TT_WORD);
				return in.sval;
			} catch (IOException e) {
				throw new Error(e);
			}
		}

		int nextInt() {
			return Integer.parseInt(next());
		}

	}

	Scanner in;
	PrintWriter out;
	final int MAX = 50000;

	void solve() {
		int n = in.nextInt(), a = in.nextInt(), b = in.nextInt();
		int sum = 1;
		String ans = "1";

		if (a == n - 1 && a > 0) {
			out.println(-1);
			return;
		}
		if (n == 1) {
			out.println(1);
			return;
		}
		if (b == 0) {
			ans = ans + " " + 1;
			for (int i = 1; i <= a; i++) {
				ans = ans + " " + ++sum;
			}
			for (int i = a + b + 2; i < n; i++) {
				ans = ans + " " + 1;
			}
			out.println(ans);
			return;
		}
		for (int i = 1; i <= b; i++) {
			ans = ans + " " + (sum + 1);
			if (sum > MAX) {
				out.println(-1);
				return;
			}
			sum += sum + 1;
		}
		sum = (sum + 1) / 2;
		for (int i = 1; i <= a; i++) {
			if (sum > MAX) {
				out.println(-1);
				return;
			}
			ans = ans + " " + ++sum;
		}
		for (int i = a + b + 1; i < n; i++) {
			ans = ans + " " + 1;
		}
		out.println(ans.charAt(0) == ' ' ? ans.substring(1) : ans);
	}

	void run() {
		in = new Scanner(System.in);
		out = new PrintWriter(System.out);
		try {
			solve();
		} finally {
			out.close();
		}
	}

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


import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.io.StreamTokenizer;

public class Main {
	static class Assert {
		static void check(boolean e) {
			if (!e) {
				throw new Error();
			}
		}
	}

	class Scanner {
		StreamTokenizer in;

		Scanner(InputStream is) {
			in = new StreamTokenizer(new InputStreamReader(is));
			in.resetSyntax();
			in.whitespaceChars(0, 32);
			in.wordChars(33, 255);
		}

		String next() {
			try {
				in.nextToken();
				Assert.check(in.ttype == in.TT_WORD);
				return in.sval;
			} catch (IOException e) {
				throw new Error(e);
			}
		}

		int nextInt() {
			return Integer.parseInt(next());
		}

	}

	Scanner in;
	PrintWriter out;
	final int MAX = 50000;

	void solve() {
		int n = in.nextInt(), a = in.nextInt(), b = in.nextInt();
		int sum = 1;
		String ans = "1";
		if (a == n - 1 && a > 0) {
			out.println(-1);
			return;
		}
		for (int i = 1; i <= b; i++) {
			ans = ans + " " + (sum + 1);
			if (sum > MAX) {
				out.println(-1);
				return;
			}
			sum += sum + 1;
		}
		sum = (sum + 1) / 2;
		for (int i = 1; i <= a; i++) {
			if (sum > MAX) {
				out.println(-1);
				return;
			}
			ans = ans + " " + ++sum;
		}
		for (int i = a + b + 1; i < n; i++) {
			ans = ans + " " + 1;
		}
		out.println(ans.charAt(0) == ' ' ? ans.substring(1) : ans);
	}

	void run() {
		in = new Scanner(System.in);
		out = new PrintWriter(System.out);
		try {
			solve();
		} finally {
			out.close();
		}
	}

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


import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.io.StreamTokenizer;

public class Main {
	static class Assert {
		static void check(boolean e) {
			if (!e) {
				throw new Error();
			}
		}
	}

	class Scanner {
		StreamTokenizer in;

		Scanner(InputStream is) {
			in = new StreamTokenizer(new InputStreamReader(is));
			in.resetSyntax();
			in.whitespaceChars(0, 32);
			in.wordChars(33, 255);
		}

		String next() {
			try {
				in.nextToken();
				Assert.check(in.ttype == in.TT_WORD);
				return in.sval;
			} catch (IOException e) {
				throw new Error(e);
			}
		}

		int nextInt() {
			return Integer.parseInt(next());
		}

	}

	Scanner in;
	PrintWriter out;
	final int MAX = 50000;

	void solve() {
		int n = in.nextInt(), a = in.nextInt(), b = in.nextInt();
		int sum = 1;
		String ans = "1";
		for (int i = 1; i <= b; i++) {
			ans = ans + " " + (sum + 1);
			if (sum > MAX) {
				out.println(-1);
				return;
			}
			sum += sum + 1;
		}
		sum = (sum + 1) / 2;
		for (int i = 1; i <= a; i++) {
			if (sum > MAX) {
				out.println(-1);
				return;
			}
			ans = ans + " " + ++sum;
		}
		for (int i = a + b + 1; i < n; i++) {
			ans = ans + " " + 1;
		}
		out.println(ans.charAt(0) == ' ' ? ans.substring(1) : ans);
	}

	void run() {
		in = new Scanner(System.in);
		out = new PrintWriter(System.out);
		try {
			solve();
		} finally {
			out.close();
		}
	}

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


import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.io.StreamTokenizer;

public class Main {
	static class Assert {
		static void check(boolean e) {
			if (!e) {
				throw new Error();
			}
		}
	}

	class Scanner {
		StreamTokenizer in;

		Scanner(InputStream is) {
			in = new StreamTokenizer(new InputStreamReader(is));
			in.resetSyntax();
			in.whitespaceChars(0, 32);
			in.wordChars(33, 255);
		}

		String next() {
			try {
				in.nextToken();
				Assert.check(in.ttype == in.TT_WORD);
				return in.sval;
			} catch (IOException e) {
				throw new Error(e);
			}
		}

		int nextInt() {
			return Integer.parseInt(next());
		}

	}

	Scanner in;
	PrintWriter out;
	final int MAX = 50000;

	void solve() {
		int n = in.nextInt(), a = in.nextInt(), b = in.nextInt();
		int sum = 1;
		String ans = "1";
		if (a == n - 1) {
			out.println(-1);
			return;
		}
		for (int i = 1; i <= b; i++) {
			ans = ans + " " + (sum + 1);
			if (sum > MAX) {
				out.println(-1);
				return;
			}
			sum += sum + 1;
		}
		sum = (sum + 1) / 2;
		for (int i = 1; i <= a; i++) {
			if (sum > MAX) {
				out.println(-1);
				return;
			}
			ans = ans + " " + ++sum;
		}
		for (int i = a + b + 1; i < n; i++) {
			ans = ans + " " + 1;
		}
		out.println(ans.charAt(0) == ' ' ? ans.substring(1) : ans);
	}

	void run() {
		in = new Scanner(System.in);
		out = new PrintWriter(System.out);
		try {
			solve();
		} finally {
			out.close();
		}
	}

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


import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.io.StreamTokenizer;

public class Main {
	static class Assert {
		static void check(boolean e) {
			if (!e) {
				throw new Error();
			}
		}
	}

	class Scanner {
		StreamTokenizer in;

		Scanner(InputStream is) {
			in = new StreamTokenizer(new InputStreamReader(is));
			in.resetSyntax();
			in.whitespaceChars(0, 32);
			in.wordChars(33, 255);
		}

		String next() {
			try {
				in.nextToken();
				Assert.check(in.ttype == in.TT_WORD);
				return in.sval;
			} catch (IOException e) {
				throw new Error(e);
			}
		}

		int nextInt() {
			return Integer.parseInt(next());
		}

	}

	Scanner in;
	PrintWriter out;
	final int MAX = 50000;

	void solve() {
		int n = in.nextInt(), a = in.nextInt(), b = in.nextInt();
		int sum = 1;
		String ans = "1";

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

			for (int i = 1; i <= a; i++) {
				ans = ans + " " + ++sum;
			}
			for (int i = a + b + 2; i < n; i++) {
				ans = ans + " " + 1;
			}
			out.println(ans);
		}
		for (int i = 1; i <= b; i++) {
			ans = ans + " " + (sum + 1);
			if (sum > MAX) {
				out.println(-1);
				return;
			}
			sum += sum + 1;
		}
		sum = (sum + 1) / 2;
		for (int i = 1; i <= a; i++) {
			if (sum > MAX) {
				out.println(-1);
				return;
			}
			ans = ans + " " + ++sum;
		}
		for (int i = a + b + 1; i < n; i++) {
			ans = ans + " " + 1;
		}
		out.println(ans.charAt(0) == ' ' ? ans.substring(1) : ans);
	}

	void run() {
		in = new Scanner(System.in);
		out = new PrintWriter(System.out);
		try {
			solve();
		} finally {
			out.close();
		}
	}

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


import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.io.StreamTokenizer;

public class Main {
	static class Assert {
		static void check(boolean e) {
			if (!e) {
				throw new Error();
			}
		}
	}

	class Scanner {
		StreamTokenizer in;

		Scanner(InputStream is) {
			in = new StreamTokenizer(new InputStreamReader(is));
			in.resetSyntax();
			in.whitespaceChars(0, 32);
			in.wordChars(33, 255);
		}

		String next() {
			try {
				in.nextToken();
				Assert.check(in.ttype == in.TT_WORD);
				return in.sval;
			} catch (IOException e) {
				throw new Error(e);
			}
		}

		int nextInt() {
			return Integer.parseInt(next());
		}

	}

	Scanner in;
	PrintWriter out;
	final int MAX = 50000;

	void solve() {
		int n = in.nextInt(), a = in.nextInt(), b = in.nextInt();
		int sum = 1;
		String ans = "1";

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

			for (int i = 1; i <= a; i++) {
				ans = ans + " " + ++sum;
			}
			for (int i = a + b + 2; i < n; i++) {
				ans = ans + " " + 1;
			}
			out.println(ans);
			return;
		}
		for (int i = 1; i <= b; i++) {
			ans = ans + " " + (sum + 1);
			if (sum > MAX) {
				out.println(-1);
				return;
			}
			sum += sum + 1;
		}
		sum = (sum + 1) / 2;
		for (int i = 1; i <= a; i++) {
			if (sum > MAX) {
				out.println(-1);
				return;
			}
			ans = ans + " " + ++sum;
		}
		for (int i = a + b + 1; i < n; i++) {
			ans = ans + " " + 1;
		}
		out.println(ans.charAt(0) == ' ' ? ans.substring(1) : ans);
	}

	void run() {
		in = new Scanner(System.in);
		out = new PrintWriter(System.out);
		try {
			solve();
		} finally {
			out.close();
		}
	}

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


import java.util.Scanner;

public class C {

    int[] res;
    int n, a, b;
    boolean ok;

    void dfs(int k, int sum, int max, int na, int nb){
        if(k==n){
            if(na!=0||nb!=0)ok = false;
            return;
        }
        if(0<nb){
            res[k] = sum+1;
            dfs(k+1, sum+sum+1, sum+1, na, nb-1);
        }
        else if(0<na){
            if(sum<max+1){
                res[k] = 1;
                dfs(k+1, sum+1, max, na, nb);
            }
            else{
                res[k] = max+1;
                dfs(k+1, sum+max+1, max+1, na-1, nb);
            }
        }
        else{
            res[k] = 1;
            dfs(k+1, sum+1, max, na, nb);
        }
    }

    void run(){
        Scanner sc = new Scanner(System.in);
        n = sc.nextInt(); a = sc.nextInt(); b = sc.nextInt();
        res = new int[n];
        res[0] = 1;
        ok = true;
        dfs(1, 1, 1, a, b);
        if(!ok){
            System.out.println(-1); return;
        }
        for(int i=0;i<n;i++)System.out.print(res[i]+(i==n-1?"\n":" "));
    }

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


import java.util.Scanner;

public class C {

    int[] res;
    int n, a, b;
    boolean ok;

    void dfs(int k, int sum, int max, int na, int nb){
        if(k==n)return;
        if(0<nb){
            res[k] = sum+1;
            dfs(k+1, sum+sum+1, sum+1, na, nb-1);
        }
        else if(0<na){
            if(sum<max+1){
                ok = false;
            }
            res[k] = max+1;
            dfs(k+1, sum+max+1, max+1, na-1, nb);
        }
        else{
            res[k] = 1;
            dfs(k+1, sum+1, max, na, nb);
        }
    }

    void run(){
        Scanner sc = new Scanner(System.in);
        n = sc.nextInt(); a = sc.nextInt(); b = sc.nextInt();
        res = new int[n];
        res[0] = 1;
        ok = true;
        dfs(1, 1, 1, a, b);
        if(!ok){
            System.out.println(-1); return;
        }
        for(int i=0;i<n;i++)System.out.print(res[i]+(i==n-1?"\n":" "));
    }

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


import java.awt.Point;
import java.io.*;
import java.math.BigInteger;
import java.security.KeyStore.Builder;
import java.util.*;

import static java.lang.Math.*;

public class Start {

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

    public static void main(String[] args) {
        new Start().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);
        }
    }

    // solve! good luck :)

   int fu (int x ){
       int sum = 0;
       for (int i =0; i<x; i++){
           sum += d[i];
       }
       return sum;
   }
    int [] d;
    public void solve() throws IOException {
       int n = readInt();
       int a = readInt();
       int b = readInt();

       d = new int [n];
       d[0] = 1;

       if (b==0){
           d[0] = 2;
           for (int i =1; i<=a; i++){
               d[i] = d[i-1]+1;
           }
           for (int i =a+1; i<n;i++){
               d[i] = 1;
           }
           for (int i =0; i<n; i++){
               out.print(d[i]+ " ");
           }
           return;
       }

       for (int i =1; i<=b; i++){
           if (i==1){
               d[1] = 2;
           }
           else {
               d[i] = fu(i)+1;
           }
       }
       for (int i =b+1; i<=b+a;i++){
           d[i] = d[i-1]+1;
       }
       for (int i =b+a+1; i<n; i++){
           d[i] = 1;
       }

       for (int i =0; i<n; i++){
           if (d[i] > 50000){
               out.print(-1);
               return;
           }
       }

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


import java.awt.Point;
import java.io.*;
import java.math.BigInteger;
import java.security.KeyStore.Builder;
import java.util.*;

import static java.lang.Math.*;

public class Start {

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

    public static void main(String[] args) {
        new Start().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);
        }
    }

    // solve! good luck :)

   int fu (int x ){
       int sum = 0;
       for (int i =0; i<x; i++){
           sum += d[i];
       }
       return sum;
   }
    int [] d;
    public void solve() throws IOException {
       int n = readInt();
       int a = readInt();
       int b = readInt();

       d = new int [n];
       d[0] = 1;

       if (b==0){
           if (n-a==1){
               out.print(-1);
               return;
           }
           d[0] = 2;
           d[1] = 2;
           for (int i =2; i<=a+1; i++){
               d[i] = d[i-1]+1;
           }

           for (int i =a+2; i<n;i++){
               d[i] = 1;
           }
             int ans = -1;
               for (int i =0; i<n; i++){
                   if (fu(i)<d[i]) {
                       ans++;
                   }
               }

               if (ans !=b){
                   out.print(-1);
                   return;
              }

           for (int i =0; i<n; i++){
               out.print(d[i]+ " ");
           }
           return;
       }

       for (int i =1; i<=b; i++){
           if (i==1){
               d[1] = 2;
           }
           else {
               d[i] = fu(i)+1;
           }
       }
       for (int i =b+1; i<=b+a;i++){
           d[i] = d[i-1]+1;
       }
       for (int i =b+a+1; i<n; i++){
           d[i] = 1;
       }

       int ans = -1;
       for (int i =0; i<n; i++){
           if (fu(i)<d[i]) {
               ans++;
           }
       }

       if (ans !=b){
           out.print(-1);
           return;
      }

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


#include <iostream>

using namespace std;

int main()
{
    int n , x , y , sum = 0 , sum1 = 0 , p ;
    cin>>n>>x>>y ;

    for(int i = 1 ; ; ++i)
    {
        sum += i , sum1 += i * i ;
        if(sum >= x && sum1 <= y)
            {
                p = i ;
                break ;
            }
        if(sum >= x && sum1 > y)
        {
            p = -1 ;
            break ;
        }
    }
    if(p == -1)
    {
      cout<<-1;
      return 0 ;
    }
    for(int i = 0 ; i < n ; ++i)
        cout<<p<<endl;
    return 0 ;
}


#include <iostream>

using namespace std;

int main()
{
    int n , x , y , sum = 0 , sum1 = 0 , p ;
    cin>>n>>x>>y ;

    for(int i = 1 ; ; ++i)
    {
        sum += i , sum1 += i * i ;
        if(sum >= x && sum1 <= y)
            p = i ;
    }
    for(int i = 0 ; i < n ; ++i)
        cout<<p<<endl;
    return 0 ;
}


#include <iostream>

using namespace std;

int main()
{
    long long n , x , y , sum = 0 , sum1 = 0 , p ;
    cin>>n>>x>>y ;

    if(n > y)
    {
        cout<<"-1";
        return 0 ;
    }
    for(long long i = 1 ; i <= n ; ++i)
    {
        if((y - (n - 1)) * (y - (n - 1)) + ((n-1) * 1) < x)
        {
            cout<<"-1";
            return 0 ;
        }
        if(i == 1)
            cout<<y-(n-1)<<endl;
        else
            cout<<1<<endl;
    }
    return 0 ;
}


#include <iostream>

using namespace std;

int main()
{
    int n , x , y , sum = 0 , sum1 = 0 , p ;
    cin>>n>>x>>y ;

    for(int i = 1 ; ; ++i)
    {
        sum += i , sum1 += i * i ;
        if(sum1 >= x && sum <= y)
            {
                p = i ;
                break ;
            }
        if(sum1 >= x && sum > y)
        {
            p = -1 ;
            break ;
        }
    }
    if(p == -1)
    {
      cout<<-1;
      return 0 ;
    }
    for(int i = 0 ; i < n ; ++i)
        cout<<p<<endl;
    return 0 ;
}


#include <iostream>

using namespace std;

int main()
{
    long long n , x , y , sum = 0 , sum1 = 0 , p ;
    cin>>n>>x>>y ;

    for(long long i = 1 ; i <= n ; ++i)
    {
        if((y - (n - 1)) * (y - (n - 1)) + ((n-1) * 1) < x)
        {
            cout<<"-1";
            return 0 ;
        }
        if(i == 1)
            cout<<y-(n-1)<<endl;
        else
            cout<<1<<endl;
    }
    return 0 ;
}


#include <iostream>

using namespace std;

int main()
{
    int n , x , y , sum = 0 , sum1 = 0 , p ;
    cin>>n>>x>>y ;

    for(int i = 1 ; i <= n ; ++i)
    {
        if((y - (n - 1)) * (y - (n - 1)) + ((n-1) * 1) < x)
        {
            cout<<"-1";
            return 0 ;
        }
        if(i == 1)
            cout<<y-(n-1)<<endl;
        else
            cout<<1<<endl;
    }
    return 0 ;
}


#include <bits/stdc++.h>
using namespace std;

#define F first
#define S second
#define ll long long
#define lld long long double
#define ull unsigned long long
#define sz(v)   ((int)((v).size()))
#define all(v) ((v).begin()),((v).end())
#define db(x) cout << "WHY " <<  x << '\n'
#define MEM(dp,i) memset( dp ,i, sizeof(dp))
#define forr(c,x,n)   for(ll c=x;c<=(ll)n; ++c)
#define forrr(c,x,n)  for(ll c=x;c>=(ll)n ;--c)
#define ICPC ios_base::sync_with_stdio(false);cin.tie(NULL);cout.tie(NULL);

priority_queue< ll  > pq;
int main()
{

ll n , x , y ; cin >> n >> x >> y ;

forr ( i ,1, n )
{
    pq.push(1);
}
ll sum1 = n , sum2 = n , f = 0  ;
while ( 1)
{

    if ( sum1 >= x && sum2 <= y ) { f=1; break;}
    if ( sum2  > y )  break;

    ll q = pq.top(); pq.pop();

    sum1 -= (q * q) ;  q++;  sum1 += ( q* q );  sum2++;

    pq.push(q);

}
if ( f )
{
    while (!pq.empty())
    {
        cout << pq.top() << endl;
        pq.pop();
    }
}
else cout << -1;
}


#include <bits/stdc++.h>
using namespace std;

#define F first
#define S second
#define ll long long
#define lld long long double
#define ull unsigned long long
#define sz(v)   ((int)((v).size()))
#define all(v) ((v).begin()),((v).end())
#define db(x) cout << "WHY " <<  x << '\n'
#define MEM(dp,i) memset( dp ,i, sizeof(dp))
#define forr(c,x,n)   for(ll c=x;c<=(ll)n; ++c)
#define forrr(c,x,n)  for(ll c=x;c>=(ll)n ;--c)
#define ICPC ios_base::sync_with_stdio(false);cin.tie(NULL);cout.tie(NULL);

priority_queue< ll  , vector<ll>  , greater<ll> > pq;
int main()
{

ll n , x , y ; cin >> n >> x >> y ;

forr ( i ,1, n )
{
    pq.push(1);
}
ll sum1 = n , sum2 = n , f = 0  ;
while ( 1)
{

    if ( sum1 >= x && sum2 <= y ) { f=1; break;}
    if ( sum2  > y )  break;

    ll q = pq.top(); pq.pop();

    sum1 -= (q * q) ;  q++;  sum1 += ( q* q );  sum2++;

    pq.push(q);

}
if ( f )
{
    while (!pq.empty())
    {
        cout << pq.top() << endl;
        pq.pop();
    }
}
else cout << -1;
}


#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const ll MOD = 1e9 + 7;
int prime[13]= {2,3,5,7,11,13,17,19,23,29,31,37,41};
char ch[26]= {'a','b','c','d'};
char s[100005]= {'0'};
int main()
{
    int n,a,b;
    cin>>n>>a>>b;
    if(n==1){
        if(a%b==0){
            cout<<b<<endl;
        }
        else{
            cout<<"-1"<<endl;
        }
        return 0;
    }
    else{
        int k=b-n+1;
        if(n-1+(k*k)<a || b<n){
            cout<<-1<<endl;
        }
        else{
            cout<<k<<endl;
            for(int i=0;i<n-1;i++){
                cout<<1<<endl;
            }
        }
    }
}


#include <bits/stdc++.h>
using namespace std;
typedef long long unsigned ll;
const ll MOD = 1e9 + 7;
int prime[13]= {2,3,5,7,11,13,17,19,23,29,31,37,41};
char ch[26]= {'a','b','c','d'};
char s[100005]= {'0'};
int main()
{
    ll n,a,b;
    cin>>n>>a>>b;
    ll k=b-n+1;
    if(n-1+(k*k)<a || b<n)
    {
        cout<<-1<<endl;
        return 0;
    }
    cout<<k<<endl;
    for(int i=0; i<n-1; i++)
    {
        cout<<1<<endl;
    }
}


#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const ll MOD = 1e9 + 7;
int prime[13]= {2,3,5,7,11,13,17,19,23,29,31,37,41};
char ch[26]= {'a','b','c','d'};
char s[100005]= {'0'};
int main()
{
    int n,a,b;
    cin>>n>>a>>b;
    if(n==1){
        if(a%b==0){
            cout<<b<<endl;
        }
        else{
            cout<<"-1"<<endl;
        }
        return 0;
    }
    else{
        int k=b-n+1;
        int i;
        int sum=0;
        for(i=0;i<n;i++){
            sum++;
            if(sum>=a)
                break;
        }
        if(i==n){
            cout<<"-1"<<endl;
        }
        else{
            cout<<k<<endl;
            for(int i=0;i<n-1;i++){
                cout<<1<<endl;
            }
        }
    }
}


#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const ll MOD = 1e9 + 7;
int prime[13]= {2,3,5,7,11,13,17,19,23,29,31,37,41};
char ch[26]= {'a','b','c','d'};
char s[100005]= {'0'};
int main()
{
    int n,a,b;
    cin>>n>>a>>b;
    if(n==1){
        if(a%b==0){
            cout<<b<<endl;
        }
        else{
            cout<<"-1"<<endl;
        }
        return 0;
    }
    else{
        int k=b-n+1;
        if(k*k<a){
            return 0*puts("-1");
        }
        else{
            cout<<k<<endl;
            for(int i=0;i<n-1;i++){
                cout<<1<<endl;
            }
        }
    }
}


#include<bits/stdc++.h>

using namespace std;

int main() {

	long long n,x,y;
	cin>>n>>x>>y;

	for(long long i = 1; i <= y; i ++) {
		if(i * i + (n - 1) >= x && i + (n - 1) <= y) {
			for(long long j = 1; j < n; j ++) {
				cout<<"1 ";
			}
			cout<<i<<" ";
			return 0;
		}
	}

	cout<<-1;

	return 0;
}


#include<bits/stdc++.h>

using namespace std;

int main() {

	int n,x,y;
	cin>>n>>x>>y;

	for(long long i = 1; i <= n; i ++) {
		if(i * i + (n - 1) >= x && i + (n - 1) <= y) {
			for(long long j = 1; j < n; j ++) {
				cout<<"1 ";
			}
			cout<<i<<" ";
			return 0;
		}
	}

	cout<<-1;

	return 0;
}


#include<bits/stdc++.h>

using namespace std;

int main() {

	int n,x,y;
	cin>>n>>x>>y;

	for(long long i = 1; i <= y; i ++) {
		if(i * i + (n - 1) >= x && i + (n - 1) <= y) {
			for(long long j = 1; j < n; j ++) {
				cout<<"1 ";
			}
			cout<<i<<" ";
			return 0;
		}
	}

	cout<<-1;

	return 0;
}


#include<bits/stdc++.h>

using namespace std;

int main() {

	int n,x,y;
	cin>>n>>x>>y;

	for(long long i = 1; i <= n; i ++) {
		if(i * i + (n - 1) >= x && i + (n - 1) <= y) {
			for(long long j = 0; j < n; j ++) {
				cout<<"1 ";
			}
			cout<<i<<" ";
			return 0;
		}
	}

	cout<<-1;

	return 0;
}


#include <iostream>
#include <cmath>
using namespace std;

int main()
{
  int N, x, y;
  cin>>N>>x>>y;

  if(N > y)
   cout<<"-1";
  else
   if(x > pow((y-N+1), 2)+N-1)
    cout<<"-1";
   else
   {
     for(int i=0; i<N-1; i++)
      cout<<"1"<<endl;
     cout<<(y-N+1);
   }

  return 0;
}


#include <iostream>
#include <cmath>
using namespace std;

int main()
{
  int N, x, y;
  cin>>N>>x>>y;

  if(x > pow((y-N+1), 2)+N-1)
   cout<<"-1";
  else
  {
    for(int i=0; i<N-1; i++)
     cout<<"1"<<endl;
    cout<<(y-N+1);
  }

  return 0;
}


#include <iostream>
#include <cmath>
using namespace std;

int main()
{
  unsigned long long int N, x, y;
  cin>>N>>x>>y;

  if(N > y)
   cout<<"-1";
  else
   if(x > pow((y-N+1), 2)+N-1)
    cout<<"-1";
   else
   {
     for(int i=0; i<N-1; i++)
      cout<<"1"<<endl;
     cout<<(y-N+1);
   }

  return 0;
}


#include <iostream>
#include <vector>
#include <set>
#include <map>
#include <queue>
#include <bitset>
#include <algorithm>
#include <string>
#include <cstring>
#include <cmath>
#include <cassert>

using namespace std;

int main()
{
	ios_base::sync_with_stdio(false);

	int N, Y;
	long long X;
	cin >> N >> X >> Y;

	long long a = Y - N + 1;
	long long res = a * a + N - 1;

	if (a > 0 && res >= X)
	{
		cout << a << endl;
		for (int i = 0; i < N - 1; i++)
			cout << 1 << endl;
	}
	else
		cout << -1 << endl;

	return 0;
}


#include <iostream>
#include <vector>
#include <set>
#include <map>
#include <queue>
#include <bitset>
#include <algorithm>
#include <string>
#include <cstring>
#include <cmath>
#include <cassert>

using namespace std;

int main()
{
	ios_base::sync_with_stdio(false);

	int N, Y;
	long long X;
	cin >> N >> X >> Y;

	long long a = Y - N + 1;
	long long res = a * a + N - 1;

	if (res >= X)
	{
		cout << a << endl;
		for (int i = 0; i < N - 1; i++)
			cout << 1 << endl;
	}
	else
		cout << -1 << endl;

	return 0;
}


#include <iostream>
#include <vector>
#include <set>
#include <map>
#include <queue>
#include <bitset>
#include <algorithm>
#include <string>
#include <cstring>
#include <cmath>
#include <cassert>

using namespace std;

int main()
{
	ios_base::sync_with_stdio(false);

	int N, Y;
	long long X;
	cin >> N >> X >> Y;

	long long a = Y - N + 1;
	long long res = a * a + N - 1;

	if (a >= 0 && res >= X)
	{
		cout << a << endl;
		for (int i = 0; i < N - 1; i++)
			cout << 1 << endl;
	}
	else
		cout << -1 << endl;

	return 0;
}


#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define f first
#define s second
int main(){
  ll n,x,y;
  scanf("%I64d%I64d%I64d",&n,&x,&y);
  if(pow(y-(n-1),2.0)+n-1<x||n>x){
    printf("-1\n");
    return 0;
  }
  for(int i=0;i<n-1;i++)
    printf("1\n");
  printf("%I64d\n",y-n+1);
return 0;
}


#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define f first
#define s second
int main(){
  ll n,x,y;
  scanf("%I64d%I64d%I64d",&n,&x,&y);
  if(pow(y-(n-1),2.0)+n-1<x||n>y){
    printf("-1\n");
    return 0;
  }
  for(int i=0;i<n-1;i++)
    printf("1\n");
  printf("%I64d\n",y-n+1);
return 0;
}


#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define f first
#define s second
int main(){
  ll n,x,y;
  scanf("%I64d%I64d%I64d",&n,&x,&y);
  if(pow(y-(n-1),2.0)+n-1<x){
    printf("-1\n");
    return 0;
  }
  for(int i=0;i<n-1;i++)
    printf("1\n");
  printf("%I64d\n",y-n+1);
return 0;
}


#include<bits/stdc++.h>
#define ipa pair<lld,lld>
#define lld long long int
#define x first
#define y second
#define ld long double
#define pb push_back
#define fastread ios_base::sync_with_stdio(false);cin.tie(NULL);cout.tie(NULL)
#define PI (atan(1)*4)
#define mp make_pair
#define mlog 21
#define mod 1000000000
using namespace std;
const int maxn=1e6+2;
main()
{
	fastread;
	lld i,j,n,m,x,y,sum=0;
	vector<lld> ans;
	cin>>n>>x>>y;
	for(i=0;i<n-1;++i)
	{
		ans.push_back(1);
		sum+=1;
	}
	lld temp2=-1;
	lld temp1=-1;
	if(x-sum>=0)
	temp1=ceil(sqrt(x-sum));
	temp2=y-sum;
	//cout<<temp<<" ";
	if(sum+temp1<=y||sum+temp2*temp2>=x)
	{

		if(sum+temp1<=y&&temp1>0)
		{
			for(i=0;i<n-1;++i)
			cout<<1<<'\n';
			cout<<temp1;

		}
		else if(sum+temp2*temp2>=x&&temp2>0)
		{
			for(i=0;i<n-1;++i)
			cout<<1<<'\n';
			cout<<temp2;
		}
		else
			cout<<-1;
	}
	else
	{
		cout<<-1;
	}
}


#include<bits/stdc++.h>
#define ipa pair<lld,lld>
#define lld long long int
#define x first
#define y second
#define ld long double
#define pb push_back
#define fastread ios_base::sync_with_stdio(false);cin.tie(NULL);cout.tie(NULL)
#define PI (atan(1)*4)
#define mp make_pair
#define mlog 21
#define mod 1000000000
using namespace std;
const int maxn=1e6+2;
main()
{
	fastread;
	lld i,j,n,m,x,y,sum=0;
	vector<lld> ans;
	cin>>n>>x>>y;
	for(i=0;i<n-1;++i)
	{
		ans.push_back(1);
		sum+=1;
	}
	lld temp=ceil(sqrt(x-sum));
	//cout<<temp<<" ";
	sum+=temp;
	if(sum<=y)
	{
		for(i=0;i<n-1;++i)
			cout<<ans[i]<<"\n";
		cout<<temp;
	}
	else
	{
		cout<<-1;
	}
}


#include<bits/stdc++.h>
#define ipa pair<lld,lld>
#define lld long long int
#define x first
#define y second
#define ld long double
#define pb push_back
#define fastread ios_base::sync_with_stdio(false);cin.tie(NULL);cout.tie(NULL)
#define PI (atan(1)*4)
#define mp make_pair
#define mlog 21
#define mod 1000000000
using namespace std;
const int maxn=1e6+2;
main()
{
	fastread;
	lld i,j,n,m,x,y,sum=0;
	vector<lld> ans;
	cin>>n>>x>>y;
	for(i=0;i<n-1;++i)
	{
		ans.push_back(1);
		sum+=1;
	}
	lld temp2=-1;
	lld temp1=-1;
	if(x-sum>=0)
	temp1=ceil(sqrt(x-sum));
	temp2=y-sum;
	//cout<<temp<<" ";
	if(sum+temp1<=y||sum+temp2*temp2>=x)
	{
		for(i=0;i<n-1;++i)
			cout<<1<<'\n';
		if(sum+temp1<=y&&temp1>0)
			cout<<temp1;
		else if(sum+temp2*temp2>=x&&temp2>0)
			cout<<temp2;
		else
			cout<<-1;
	}
	else
	{
		cout<<-1;
	}
}