#include <bits/stdc++.h>
using namespace std;
int n, a, b;
bool chk(long long *ans) {
  long long tot = 1;
  long long mx = 1;
  int A = 0, B = 0;
  for (int i = (1); i < (int)(n); i++) {
    if (ans[i] > tot)
      B++;
    else if (ans[i] > mx)
      A++;
    tot += ans[i];
    mx = max(mx, ans[i]);
  }
  return A == a && B == b;
}
void out(long long *ans) {
  for (int i = (0); i < (int)(n); i++) cout << ans[i] << " ";
}
int main() {
  cin >> n >> a >> b;
  long long ans[n];
  ans[0] = 1;
  int p = 1;
  for (int i = (0); i < (int)(b); i++) ans[p] = ans[p - 1] * 2, p++;
  for (int i = (0); i < (int)(a); i++) ans[p] = ans[p - 1] + 1, p++;
  for (int i = (0); i < (int)(n - a - b - 1); i++) ans[p++] = 1;
  if (chk(ans)) {
    out(ans);
    return 0;
  }
  if (n >= a + b + 2) {
    ans[0] = 1;
    ans[1] = 1;
    p = 2;
    for (int i = (0); i < (int)(b); i++) ans[p] = ans[p - 1] * 2, p++;
    for (int i = (0); i < (int)(a); i++) ans[p] = ans[p - 1] + 1, p++;
    for (int i = (0); i < (int)(n - a - b - 2); i++) ans[p++] = 1;
    if (chk(ans)) {
      out(ans);
      return 0;
    }
  }
  cout << "-1";
  return 0;
}
