#include <bits/stdc++.h>

using namespace std;

#define pb			push_back
#define all(v)			((v).begin()), ((v).end())
#define SZ(v)			((int)((v).size()))
#define clr(v, d)		memset(v, d, sizeof(v))
#define has(c,i) 		((c).find(i) != end(c))
#define hastr(s, c)		((s).find(c) != string::npos)

template <class T>
istream& operator>>(istream& is, vector<T>& v) {
  for (T& x : v)
    is >> x;
  return is;
}

const int dr[] { -1, -1, 0, 1, 1, 1, 0, -1 };
const int dc[] { 0, 1, 1, 1, 0, -1, -1, -1 };

typedef long long ll;
typedef vector<int> vi;
typedef vector<ll> vll;

int main() {
#ifndef	ONLINE_JUDGE
//	freopen("input.in", "r", stdin);
//	freopen("output.out", "w", stdout);
#endif
    ios_base::sync_with_stdio(false);
    cin.tie(nullptr);
    cout.tie(nullptr);
    int n, wow, oh;
    cin >> n >> wow >> oh;
    if(n == 1 && (wow || oh)) {
        cout << -1;
        return 0;
    }
    if(!wow && oh == n - 1) {
        cout << -1;
        return 0;
    }
    ll cum[50900];
    ll cur = 0;
    cout << 0 << " ";
    int i = 1;
    for(; i <= oh; ++i) {
        cout << i << " ";
        cum[i] += cum[i - 1] + i;
    }
    int idx = 1;
    for(; i <= wow + oh; ++i) {
        cout << cum[i - 1] * 2 << " ";
        cum[i] += cum[i - 1] + i;
    }
    n -= oh;
    n -= wow;
    for(int i = 0; i < n; ++i) {
        cout << 0 << " ";
    }
    cout << endl;
    return 0;
}


#include <bits/stdc++.h>

using namespace std;

#define pb			push_back
#define all(v)			((v).begin()), ((v).end())
#define SZ(v)			((int)((v).size()))
#define clr(v, d)		memset(v, d, sizeof(v))
#define has(c,i) 		((c).find(i) != end(c))
#define hastr(s, c)		((s).find(c) != string::npos)

template <class T>
istream& operator>>(istream& is, vector<T>& v) {
  for (T& x : v)
    is >> x;
  return is;
}

const int dr[] { -1, -1, 0, 1, 1, 1, 0, -1 };
const int dc[] { 0, 1, 1, 1, 0, -1, -1, -1 };

typedef long long ll;
typedef vector<int> vi;
typedef vector<ll> vll;

int main() {
#ifndef	ONLINE_JUDGE
//	freopen("input.in", "r", stdin);
//	freopen("output.out", "w", stdout);
#endif
    ios_base::sync_with_stdio(false);
    cin.tie(nullptr);
    cout.tie(nullptr);
    int n, a, b, sum = 0, st = 1;
    cin >> n >> a >> b;
    vi v;
    if(n == 1 && (a || b)) {
        cout << -1;
        return 0;
    }
    if(!a && b == n - 1) {
        cout << -1;
        return 0;
    }
    for(int i = 0; i < n; ++i) {
        if(i && b) {
            st = sum + 1;
            --b;
        }
        else if (i && a && st + 1 <= sum) {
            ++st;
            --a;
        }
        sum += st;
        v.pb(st);
    }
    for(auto i : v)
        cout << i << " ";
    cout << endl;
    return 0;
}


#include <bits/stdc++.h>

using namespace std;

#define pb			push_back
#define all(v)			((v).begin()), ((v).end())
#define SZ(v)			((int)((v).size()))
#define clr(v, d)		memset(v, d, sizeof(v))
#define has(c,i) 		((c).find(i) != end(c))
#define hastr(s, c)		((s).find(c) != string::npos)

template <class T>
istream& operator>>(istream& is, vector<T>& v) {
  for (T& x : v)
    is >> x;
  return is;
}

const int dr[] { -1, -1, 0, 1, 1, 1, 0, -1 };
const int dc[] { 0, 1, 1, 1, 0, -1, -1, -1 };

typedef long long ll;
typedef vector<int> vi;
typedef vector<ll> vll;

int main() {
#ifndef	ONLINE_JUDGE
//	freopen("input.in", "r", stdin);
//	freopen("output.out", "w", stdout);
#endif
    ios_base::sync_with_stdio(false);
    cin.tie(nullptr);
    cout.tie(nullptr);
    int n, a, b, sum = 0, st = 1;
    cin >> n >> a >> b;
    vi v;
    for(int i = 0; i < n; ++i) {
        if(i && b) {
            st = sum + 1;
            --b;
        }
        else if (i && a && st + 1 <= sum) {
            ++st;
            --a;
        }
        sum += st;
        v.pb(st);
    }
    if(!a && !b) {
        for(auto i : v)
            cout << i << " ";
    } else {
        cout << -1;
    }
    cout << endl;
    return 0;
}


#include <bits/stdc++.h>

using namespace std;

#define pb			push_back
#define all(v)			((v).begin()), ((v).end())
#define SZ(v)			((int)((v).size()))
#define clr(v, d)		memset(v, d, sizeof(v))
#define has(c,i) 		((c).find(i) != end(c))
#define hastr(s, c)		((s).find(c) != string::npos)

template <class T>
istream& operator>>(istream& is, vector<T>& v) {
  for (T& x : v)
    is >> x;
  return is;
}

const int dr[] { -1, -1, 0, 1, 1, 1, 0, -1 };
const int dc[] { 0, 1, 1, 1, 0, -1, -1, -1 };

typedef long long ll;
typedef vector<int> vi;
typedef vector<ll> vll;

int main() {
#ifndef	ONLINE_JUDGE
//	freopen("input.in", "r", stdin);
//	freopen("output.out", "w", stdout);
#endif
    ios_base::sync_with_stdio(false);
    cin.tie(nullptr);
    cout.tie(nullptr);
    int n, a, b, sum, st = 1;
    cin >> n >> a >> b;
    vi v;
    for(int i = 0; i < n; ++i) {
        if(i && b) {
            st = sum + 1;
            --b;
        }
        else if (i && a && st + 1 <= sum) {
            ++st;
            --a;
        }
        v.pb(st);
    }
    for(auto i : v)
        cout << i << " ";
    cout << endl;
    return 0;
}


#include <bits/stdc++.h>

using namespace std;

#define pb			push_back
#define all(v)			((v).begin()), ((v).end())
#define SZ(v)			((int)((v).size()))
#define clr(v, d)		memset(v, d, sizeof(v))
#define has(c,i) 		((c).find(i) != end(c))
#define hastr(s, c)		((s).find(c) != string::npos)

template <class T>
istream& operator>>(istream& is, vector<T>& v) {
  for (T& x : v)
    is >> x;
  return is;
}

const int dr[] { -1, -1, 0, 1, 1, 1, 0, -1 };
const int dc[] { 0, 1, 1, 1, 0, -1, -1, -1 };

typedef long long ll;
typedef vector<int> vi;
typedef vector<ll> vll;

int main() {
#ifndef	ONLINE_JUDGE
//	freopen("input.in", "r", stdin);
//	freopen("output.out", "w", stdout);
#endif
    ios_base::sync_with_stdio(false);
    cin.tie(nullptr);
    cout.tie(nullptr);
    int n, wow, oh;
    cin >> n >> wow >> oh;
    if(n == 1 && (wow || oh)) {
        cout << -1;
        return 0;
    }
    if(!wow && oh == n - 1) {
        cout << -1;
        return 0;
    }
    ll cum[50900];
    ll cur = 0;
    cout << 0 << " ";
    n--;
    int i = 1;
    for(; i <= oh; ++i) {
        cout << i << " ";
        cum[i] += cum[i - 1] + i;
    }
    int idx = 1;
    for(; i <= wow + oh; ++i) {
        cout << cum[idx++] + i + 2 << " ";
    }
    n -= oh;
    n -= wow;
    for(int i = 0; i < n; ++i) {
        cout << 0 << " ";
    }
    cout << endl;
    return 0;
}


#include <bits/stdc++.h>

using namespace std;

#define pb			push_back
#define all(v)			((v).begin()), ((v).end())
#define SZ(v)			((int)((v).size()))
#define clr(v, d)		memset(v, d, sizeof(v))
#define has(c,i) 		((c).find(i) != end(c))
#define hastr(s, c)		((s).find(c) != string::npos)

template <class T>
istream& operator>>(istream& is, vector<T>& v) {
  for (T& x : v)
    is >> x;
  return is;
}

const int dr[] { -1, -1, 0, 1, 1, 1, 0, -1 };
const int dc[] { 0, 1, 1, 1, 0, -1, -1, -1 };

typedef long long ll;
typedef vector<int> vi;
typedef vector<ll> vll;

int main() {
#ifndef	ONLINE_JUDGE
//	freopen("input.in", "r", stdin);
//	freopen("output.out", "w", stdout);
#endif
    ios_base::sync_with_stdio(false);
    cin.tie(nullptr);
    cout.tie(nullptr);
    int n, a, b, sum = 0, st = 1;
    cin >> n >> a >> b;
    vi v;
    for(int i = 0; i < n; ++i) {
        if(i && b) {
            st = sum + 1;
            --b;
        }
        else if (i && a && st + 1 <= sum) {
            ++st;
            --a;
        }
        sum += st;
        v.pb(st);
    }
    if(a || b) {
        cout << -1;
        return 0;
    }
    for(auto i : v)
        cout << i << " ";
    cout << endl;
    return 0;
}


#include <bits/stdc++.h>

using namespace std;

#define pb			push_back
#define all(v)			((v).begin()), ((v).end())
#define SZ(v)			((int)((v).size()))
#define clr(v, d)		memset(v, d, sizeof(v))
#define has(c,i) 		((c).find(i) != end(c))
#define hastr(s, c)		((s).find(c) != string::npos)

template <class T>
istream& operator>>(istream& is, vector<T>& v) {
  for (T& x : v)
    is >> x;
  return is;
}

const int dr[] { -1, -1, 0, 1, 1, 1, 0, -1 };
const int dc[] { 0, 1, 1, 1, 0, -1, -1, -1 };

typedef long long ll;
typedef vector<int> vi;
typedef vector<ll> vll;

int main() {
#ifndef	ONLINE_JUDGE
//	freopen("input.in", "r", stdin);
//	freopen("output.out", "w", stdout);
#endif
    ios_base::sync_with_stdio(false);
    cin.tie(nullptr);
    cout.tie(nullptr);
    int n, a, b, sum = 0, st = 1;
    cin >> n >> a >> b;
    vi v;
    for(int i = 0; i < n; ++i) {
        if(i && b) {
            st = sum + 1;
            --b;
        }
        else if (i && a && st + 1 <= sum) {
            ++st;
            --a;
        }
        sum += st;
        v.pb(st);
    }
    if(!a && !b) {
        for(auto i : v)
            cout << i << " ";
    }
    cout << endl;
    return 0;
}


#include <bits/stdc++.h>

using namespace std;

#define pb			push_back
#define all(v)			((v).begin()), ((v).end())
#define SZ(v)			((int)((v).size()))
#define clr(v, d)		memset(v, d, sizeof(v))
#define has(c,i) 		((c).find(i) != end(c))
#define hastr(s, c)		((s).find(c) != string::npos)

template <class T>
istream& operator>>(istream& is, vector<T>& v) {
  for (T& x : v)
    is >> x;
  return is;
}

const int dr[] { -1, -1, 0, 1, 1, 1, 0, -1 };
const int dc[] { 0, 1, 1, 1, 0, -1, -1, -1 };

typedef long long ll;
typedef vector<int> vi;
typedef vector<ll> vll;

int main() {
#ifndef	ONLINE_JUDGE
//	freopen("input.in", "r", stdin);
//	freopen("output.out", "w", stdout);
#endif
    ios_base::sync_with_stdio(false);
    cin.tie(nullptr);
    cout.tie(nullptr);
    int n, wow, oh;
    cin >> n >> wow >> oh;
    if(n == 1 && (wow || oh)) {
        cout << -1;
        return 0;
    }
    if(!wow && oh == n - 1) {
        cout << -1;
        return 0;
    }
    ll cum[50900];
    ll cur = 0;
    cout << 1 << " ";
    int i = 2;
    for(; i <= oh + 1; ++i) {
        cout << i * 2 << " ";
        cum[i] += cum[i - 1] + i * 2;
    }
    for(; i <= wow + oh + 1; ++i) {
        cout << cum[i - 1] * 4 << " ";
        cum[i] += cum[i - 1] + i;
    }
    n -= oh;
    n -= wow;
    for(int i = 0; i < n - 1; ++i) {
        cout << 1 << " ";
    }
    cout << endl;
    return 0;
}


#include <bits/stdc++.h>

using namespace std;

#define pb			push_back
#define all(v)			((v).begin()), ((v).end())
#define SZ(v)			((int)((v).size()))
#define clr(v, d)		memset(v, d, sizeof(v))
#define has(c,i) 		((c).find(i) != end(c))
#define hastr(s, c)		((s).find(c) != string::npos)

template <class T>
istream& operator>>(istream& is, vector<T>& v) {
  for (T& x : v)
    is >> x;
  return is;
}

const int dr[] { -1, -1, 0, 1, 1, 1, 0, -1 };
const int dc[] { 0, 1, 1, 1, 0, -1, -1, -1 };

typedef long long ll;
typedef vector<int> vi;
typedef vector<ll> vll;

int main() {
#ifndef	ONLINE_JUDGE
//	freopen("input.in", "r", stdin);
//	freopen("output.out", "w", stdout);
#endif
    ios_base::sync_with_stdio(false);
    cin.tie(nullptr);
    cout.tie(nullptr);
    int n, a, b, sum, st = 1;
    cin >> n >> a >> b;
    vi v;
    for(int i = 0; i < n; ++i) {
        if(i && b) {
            st = sum + 1;
            --b;
        }
        else if (i && a && st + 1 <= sum) {
            ++st;
            --a;
        }
        v.pb(st);
    }
    for(auto i : st)
        cout << i << " ";
    cout << endl;
    return 0;
}


#include <iostream>
#include <cstdio>
#include <cmath>
#include <algorithm>
#include <cstring>
#include <sstream>
#include <string>
#include <vector>
#include <list>
#include <queue>
#include <stack>
#include <map>
#include <set>
#include <bitset>
#define maxn 5000
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
typedef long double ld;
const int INF=0x3fffffff;
const int inf=-INF;
const int N=10005;
const int M=2005;
const int mod=1000000007;
const double pi=acos(-1.0);
int n,a,b,arr[maxn];
int main()
{

    scanf("%d%d%d",&n,&a,&b);
    arr[0]=1;
    int sum=0,i=1;
    if(b==0&&a!=0&&n-2<a){
        printf("-1\n");
        return 0;
    }
    else if(b==0&&a!=0){
        a[0]=a[1]=1;
        i=2;
    }

    for(;i<n;i++){
        if(b>0){
            arr[i]=arr[i-1]*2;
            if(arr[i]>50000){
                printf("-1\n");
                return 0;
            }
            b--;
        }
        else if(a>0){
            arr[i]=arr[i-1]+1;
            if(arr[i]>50000){
                printf("-1\n");
                return 0;
            }
            a--;
        }
        else{
            arr[i]=arr[i-1];
        }
    }

    for(int i=0;i<n;i++){
        printf("%d",arr[i]);
        if(i!=n-1)printf(" ");
        else printf("\n");
    }

    return 0;
}


#include <iostream>
#include <cstdio>
#include <cmath>
#include <algorithm>
#include <cstring>
#include <sstream>
#include <string>
#include <vector>
#include <list>
#include <queue>
#include <stack>
#include <map>
#include <set>
#include <bitset>
#define maxn 5000
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
typedef long double ld;
const int INF=0x3fffffff;
const int inf=-INF;
const int N=10005;
const int M=2005;
const int mod=1000000007;
const double pi=acos(-1.0);
int n,a,b,arr[maxn];
int main()
{

    scanf("%d%d%d",&n,&a,&b);
    arr[0]=1;
    int sum=0;
    for(int i=1;i<n;i++){
        if(b>0){
            arr[i]=arr[i-1]*2;
            if(arr[i]>50000){
                printf("-1\n");
                return 0;
            }
            b--;
            a--;
        }
        else if(a>0){
            arr[i]=arr[i-1]+1;
            if(arr[i]>50000){
                printf("-1\n");
                return 0;
            }
            a--;
        }
        else{
            arr[i]=arr[i-1]-1;
            if(arr[i]<1)sum++;
        }
    }
    for(int i=0;i<n;i++){
        arr[i]+=sum;
        if(arr[i]>50000){
            printf("-1\n");
            return 0;
        }
    }
    for(int i=0;i<n;i++){
        printf("%d",arr[i]);
        if(i!=n-1)printf(" ");
        else printf("\n");
    }

    return 0;
}


#include <iostream>
#include <cstdio>
#include <cmath>
#include <algorithm>
#include <cstring>
#include <sstream>
#include <string>
#include <vector>
#include <list>
#include <queue>
#include <stack>
#include <map>
#include <set>
#include <bitset>
#define maxn 5000
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
typedef long double ld;
const int INF=0x3fffffff;
const int inf=-INF;
const int N=10005;
const int M=2005;
const int mod=1000000007;
const double pi=acos(-1.0);
int n,a,b,arr[maxn];
int main()
{

    scanf("%d%d%d",&n,&a,&b);
    arr[0]=1;
    int sum=0;
    for(int i=1;i<n;i++){
        if(b>0){
            arr[i]=arr[i-1]*2;
            if(arr[i]>50000){
                printf("-1\n");
                return 0;
            }
            b--;
        }
        else if(a>0){
            arr[i]=arr[i-1]+1;
            if(arr[i]>50000){
                printf("-1\n");
                return 0;
            }
            a--;
        }
        else{
            arr[i]=arr[i-1];
        }
    }

    for(int i=0;i<n;i++){
        printf("%d",arr[i]);
        if(i!=n-1)printf(" ");
        else printf("\n");
    }

    return 0;
}


#include <iostream>
#include <cstdio>
#include <cmath>
#include <algorithm>
#include <cstring>
#include <sstream>
#include <string>
#include <vector>
#include <list>
#include <queue>
#include <stack>
#include <map>
#include <set>
#include <bitset>
#define maxn 5000
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
typedef long double ld;
const int INF=0x3fffffff;
const int inf=-INF;
const int N=10005;
const int M=2005;
const int mod=1000000007;
const double pi=acos(-1.0);
int n,a,b,arr[maxn];
int main()
{

    scanf("%d%d%d",&n,&a,&b);
    arr[0]=1;
    int sum=0;
    if(b==0&&a!=0){
        printf("-1\n")
        return 0;
    }
    for(int i=1;i<n;i++){
        if(b>0){
            arr[i]=arr[i-1]*2;
            if(arr[i]>50000){
                printf("-1\n");
                return 0;
            }
            b--;
        }
        else if(a>0){
            arr[i]=arr[i-1]+1;
            if(arr[i]>50000){
                printf("-1\n");
                return 0;
            }
            a--;
        }
        else{
            arr[i]=arr[i-1];
        }
    }

    for(int i=0;i<n;i++){
        printf("%d",arr[i]);
        if(i!=n-1)printf(" ");
        else printf("\n");
    }

    return 0;
}


#include <iostream>
#include <cstdio>
#include <cmath>
#include <algorithm>
#include <cstring>
#include <sstream>
#include <string>
#include <vector>
#include <list>
#include <queue>
#include <stack>
#include <map>
#include <set>
#include <bitset>
#define maxn 5000
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
typedef long double ld;
const int INF=0x3fffffff;
const int inf=-INF;
const int N=10005;
const int M=2005;
const int mod=1000000007;
const double pi=acos(-1.0);
int n,a,b,arr[maxn];
int main()
{

    scanf("%d%d%d",&n,&a,&b);
    arr[0]=1;
    int sum=0;
    if(b==0&&a!=0){
        printf("-1\n");
        return 0;
    }
    for(int i=1;i<n;i++){
        if(b>0){
            arr[i]=arr[i-1]*2;
            if(arr[i]>50000){
                printf("-1\n");
                return 0;
            }
            b--;
        }
        else if(a>0){
            arr[i]=arr[i-1]+1;
            if(arr[i]>50000){
                printf("-1\n");
                return 0;
            }
            a--;
        }
        else{
            arr[i]=arr[i-1];
        }
    }

    for(int i=0;i<n;i++){
        printf("%d",arr[i]);
        if(i!=n-1)printf(" ");
        else printf("\n");
    }

    return 0;
}


#include <iostream>
#include <cstdio>
#include <cmath>
#include <algorithm>
#include <cstring>
#include <sstream>
#include <string>
#include <vector>
#include <list>
#include <queue>
#include <stack>
#include <map>
#include <set>
#include <bitset>
#define maxn 5000
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
typedef long double ld;
const int INF=0x3fffffff;
const int inf=-INF;
const int N=10005;
const int M=2005;
const int mod=1000000007;
const double pi=acos(-1.0);
int n,a,b,arr[maxn];
int main()
{

    scanf("%d%d%d",&n,&a,&b);
    arr[0]=1;
    int sum=0,i=1;
    if(b==0&&a!=0&&n-2<a){
        printf("-1\n");
        return 0;
    }
    else if(b==0&&a!=0){
        arr[0]=arr[1]=1;
        i=2;
    }

    for(;i<n;i++){
        if(b>0){
            arr[i]=arr[i-1]*2;
            if(arr[i]>50000){
                printf("-1\n");
                return 0;
            }
            b--;
        }
        else if(a>0){
            arr[i]=arr[i-1]+1;
            if(arr[i]>50000){
                printf("-1\n");
                return 0;
            }
            a--;
        }
        else{
            arr[i]=arr[i-1];
        }
    }

    for(int i=0;i<n;i++){
        printf("%d",arr[i]);
        if(i!=n-1)printf(" ");
        else printf("\n");
    }

    return 0;
}


#include <iostream>
#include <cstdio>
#include <cmath>
#include <algorithm>
#include <cstring>
#include <sstream>
#include <string>
#include <vector>
#include <list>
#include <queue>
#include <stack>
#include <map>
#include <set>
#include <bitset>
#define maxn 5000
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
typedef long double ld;
const int INF=0x3fffffff;
const int inf=-INF;
const int N=10005;
const int M=2005;
const int mod=1000000007;
const double pi=acos(-1.0);
int n,a,b,arr[maxn];
int main()
{

    scanf("%d%d%d",&n,&a,&b);
    arr[0]=1;
    int sum=0;
    if(b==0&&a!=0&&n-2<a){
        printf("-1\n");
        return 0;
    }
    for(int i=1;i<n;i++){
        if(b>0){
            arr[i]=arr[i-1]*2;
            if(arr[i]>50000){
                printf("-1\n");
                return 0;
            }
            b--;
        }
        else if(a>0){
            arr[i]=arr[i-1]+1;
            if(arr[i]>50000){
                printf("-1\n");
                return 0;
            }
            a--;
        }
        else{
            arr[i]=arr[i-1];
        }
    }

    for(int i=0;i<n;i++){
        printf("%d",arr[i]);
        if(i!=n-1)printf(" ");
        else printf("\n");
    }

    return 0;
}


#include<cstdio>
int n,a,b,c[110],now,sum;
int main(){
    scanf("%d%d%d",&n,&a,&b);
    c[1]=now=sum=1;
    for(int i=2;i<=n;++i){
        if(b)now=sum+1,--b;
        else if(a)if(i!=2)++now,--a;
        c[i]=now;sum+=now;
    }
    if(a||b)printf("-1");
    else for(int i=1;i<=n;++i)printf("%d ",c[i]);
    return 0;
}


 ///IN THE NAME OF ALLAH
 #include<bits/stdc++.h>
 using namespace std;
 int Arr[100000];
 long long ans=0;
 int main(){
  int n,a,b;
  cin >> n >> a >> b;
  int cnt=b,i;
  for(i=n;cnt>=1;cnt--,i--) Arr[i]=50000;
  int id=2;
  cnt=a;
  i++;
  long long Sum=0;
  for(i-=cnt;cnt>=1;cnt--,i++)
    Arr[i]=id++;
  for(int i=1;i<=n;i++){
    if(Arr[i]==0)
      Arr[i]=1;
    if(i==3 && Arr[1]==1 && Arr[2]==2 && Arr[3]==3)
        Arr[3]=4;
    if(Arr[i]!=50000)
      Sum+=Arr[i];
  }
  for(int i=1;i<=n;i++){
    if(Arr[i]==50000){
            Arr[i]=Sum+1;
            Sum=2*Sum+1;
    }
    cout<<Arr[i]<<" ";
   }
 }


 ///IN THE NAME OF ALLAH
 #include<bits/stdc++.h>
 using namespace std;
 int Arr[100000];
 long long ans=0;
 int main(){
  int n,a,b;
  cin >> n >> a >> b;
  int cnt=b,i;
  for(i=n;cnt>=1;cnt--,i--) Arr[i]=50000;
  int id=2;
  cnt=a;
  i++;
  long long Sum=0;
  for(i-=cnt;cnt>=1;cnt--,i++)
    Arr[i]=id++;
  for(int i=1;i<=n;i++){
    if(Arr[i]==0)
      Arr[i]=1;
    if(Arr[i]!=50000)
      Sum+=Arr[i];
  }
  for(int i=1;i<=n;i++){
    if(Arr[i]==50000) {
            Arr[i]=Sum+1;
            Sum=2*Sum+1;
    }
    cout<<Arr[i]<<" ";
   }
 }


 ///IN THE NAME OF ALLAH
 #include<bits/stdc++.h>
 using namespace std;
 int Arr[100000];
 long long ans=0;
 int main(){
  int n,a,b;
  cin >> n >> a >> b;
  int cnt=b,i;
  for(i=n;cnt>=1;cnt--,i--) Arr[i]=50000;
  int id=2;
  cnt=a;
  i++;
  for(i-=cnt;cnt>=1;cnt--,i++)
    Arr[i]=id++;
  for(int i=1;i<n;i++)
   if(Arr[i]==0)
    Arr[i]=1;

  for(int i=1;i<=n;i++)
    cout<<Arr[i]<<" ";
 }


 ///IN THE NAME OF ALLAH
 #include<bits/stdc++.h>
 using namespace std;
 int Arr[100000];
 long long ans=0;
 int main(){
  int n,a,b;
  cin >> n >> a >> b;
  int cnt=b,i;
  for(i=n;cnt>=1;cnt--,i--) Arr[i]=50000;
  int id=2;
  cnt=a;
  i++;
  long long Sum=0;
  for(i-=cnt;cnt>=1;cnt--,i++)
    Arr[i]=id++;
  for(int i=1;i<n;i++){
    if(Arr[i]==0)
      Arr[i]=1;
    if(Arr[i]!=50000)
      Sum+=Arr[i];
  }
  for(int i=1;i<=n;i++){
    if(Arr[i]==50000) {
            Arr[i]=Sum+1;
            Sum=2*Sum+1;
    }
    cout<<Arr[i]<<" ";
   }
 }


 ///IN THE NAME OF ALLAH
 #include<bits/stdc++.h>
 using namespace std;
 int Arr[100000];
 long long ans=0;
 int main(){
  int n,a,b;
  cin >> n >> a >> b;
  int cnt=b,i;
  for(i=n;cnt>=1;cnt--,i--) Arr[i]=50000;
  int id=2;
  cnt=a;
  i++;
  long long Sum=0;
  for(i-=cnt;cnt>=1;cnt--,i++)
    Arr[i]=id++;
  for(int i=1;i<=n;i++){
    if(Arr[i]==0)
      Arr[i]=1;
    if(Arr[i]!=50000 && Sum>=Arr[i])
        Arr[i]=Sum+1;
    if(Arr[i]!=50000)
      Sum+=Arr[i];
  }
  for(int i=1;i<=n;i++){
    if(Arr[i]==50000){
            Arr[i]=Sum+1;
            Sum=2*Sum+1;
    }
    cout<<Arr[i]<<" ";
   }
 }


 ///IN THE NAME OF ALLAH
 #include<bits/stdc++.h>
 using namespace std;
 int Arr[100000];
 long long ans=0;
 int main(){
  int n,a,b;
  cin >> n >> a >> b;
  int cnt=b,i;
  for(i=n;cnt>=1;cnt--,i--) Arr[i]=50000;
  int id=2;
  cnt=a;
  i++;
  long long Sum=0;
  for(i-=cnt;cnt>=1;cnt--,i++)
    Arr[i]=id++;
  for(int i=1;i<n;i++){
    if(Arr[i]==0)
      Arr[i]=1;
    if(Arr[i]!=50000)
      Sum+=Arr[i];
  }
  for(int i=1;i<=n;i++){
    if(Arr[i]==50000) Arr[i]=Sum+1;
    cout<<Arr[i]<<" ";
    Sum++;
   }
 }


#define watch5(A,b,c,d,e) cerr<<#A<<": "<<A<<" | "<<#b<<": "<<b<<" | "<<#c<<": "<<c<<" | "<<#d<<": "<<d << " | "<<#e<<": "<<e<<endl;
#define watch4(A,b,c,d) cerr<<#A<<": "<<A<<" | "<<#b<<": "<<b<<" | "<<#c<<": "<<c<<" | "<<#d<<": "<<d<<endl;
#define watch3(A,b,c) cerr <<#A<<": "<<A<<" | "<<#b<<": "<<b<<" | "<<#c<<": "<<c<<endl;
#define sharingan cerr << "\N-------------------------------------------\N\N";
#define watch2(A,b) cerr <<#A<<": "<<A<<" | "<<#b<<": "<<b<< endl;
#define Yup ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);
#define watch(A) cerr <<#A<<": "<<A<<endl;
#define __gcd(A, b) __algo_gcd(A, b)
#define PI 3.14159265358979323846
#include<set>
#include<map>
#include<cmath>
#include<stack>
#include<queue>
#include<array>
#include<cstdio>
#include<bitset>
#include<vector>
#include<utility>
#include<sstream>
#include<cstring>
#include <climits>
#include <fstream>
#include<iostream>
#include<iomanip>
#include<algorithm>
#include <functional>
#include <unordered_map>
using namespace std;
#define mod 1000000007

int n, a, b;
vector<long long> v;

int go( long long s ){
    int ex = n - a - b;
    long long sum = 0;
    v.push_back(1);
    sum += 2;
    for( int i = 0; i < b; i++ ){
        v.push_back(sum);
        s = sum;
        if( sum > 500000*1LL ){
            return 0;
        }
        sum = sum + sum + 1;
    }
    for( int i = 0; i < a; i++ ){
        s++;
        v.push_back(s);
        if( s > 500000*1LL ){
            return 0;
        }
    }
    for( int i = 0; i < ex-1; i++ ){
        v.push_back(s);
        sum += s;
    }
    return 1;
}

int can(){
    int o = 0, w = 0;
    long long sum = 0;
    sum += v[0];
    for( int i = 1; i < n; i++ ){
        if( v[i] > sum ){
            w++;
        }
        else if( v[i] > v[i-1] ){
            o++;
        }
        sum += v[i];
    }
    if( a == o && b == w )return 1;
    return 0;
}

int main(){
    cin >> n >> a >> b;
    for( int i = 1; i < 100; i++ ){
        v.clear();
        if( go(i) ){
            if( !can() )continue;
            for( auto it : v ){
                cout << it << " ";
            }
            return 0;
        }
    }
    cout << "-1";
}


#define watch5(A,b,c,d,e) cerr<<#A<<": "<<A<<" | "<<#b<<": "<<b<<" | "<<#c<<": "<<c<<" | "<<#d<<": "<<d << " | "<<#e<<": "<<e<<endl;
#define watch4(A,b,c,d) cerr<<#A<<": "<<A<<" | "<<#b<<": "<<b<<" | "<<#c<<": "<<c<<" | "<<#d<<": "<<d<<endl;
#define watch3(A,b,c) cerr <<#A<<": "<<A<<" | "<<#b<<": "<<b<<" | "<<#c<<": "<<c<<endl;
#define sharingan cerr << "\N-------------------------------------------\N\N";
#define watch2(A,b) cerr <<#A<<": "<<A<<" | "<<#b<<": "<<b<< endl;
#define Yup ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);
#define watch(A) cerr <<#A<<": "<<A<<endl;
#define __gcd(A, b) __algo_gcd(A, b)
#define PI 3.14159265358979323846
#include<set>
#include<map>
#include<cmath>
#include<stack>
#include<queue>
#include<array>
#include<cstdio>
#include<bitset>
#include<vector>
#include<utility>
#include<sstream>
#include<cstring>
#include <climits>
#include <fstream>
#include<iostream>
#include<iomanip>
#include<algorithm>
#include <functional>
#include <unordered_map>
using namespace std;
#define mod 1000000007

int n, a, b;
vector<int> v;

int go( long long s ){
    int ex = n - a - b;
    long long sum = 0;
    for( int i = 0; i < ex; i++ ){
        v.push_back(s);
        sum += s;
    }
    for( int i = 0; i < a; i++ ){
        s++;
        v.push_back(s);
        sum += s;
    }
    for( int i = 0; i < b; i++ ){
        s += (s+1);
        v.push_back(s);
        sum += s;
        if( sum > 500000*1LL ){
            return 0;
        }
    }
    return 1;
}

int main(){
    cin >> n >> a >> b;
    for( int i = 1; i < 100; i++ ){
        v.clear();
        if( go(i) ){
            for( auto it : v ){
                cout << it << " ";
            }
            return 0;
        }
    }
    cout << "-1";
}


#define watch5(A,b,c,d,e) cerr<<#A<<": "<<A<<" | "<<#b<<": "<<b<<" | "<<#c<<": "<<c<<" | "<<#d<<": "<<d << " | "<<#e<<": "<<e<<endl;
#define watch4(A,b,c,d) cerr<<#A<<": "<<A<<" | "<<#b<<": "<<b<<" | "<<#c<<": "<<c<<" | "<<#d<<": "<<d<<endl;
#define watch3(A,b,c) cerr <<#A<<": "<<A<<" | "<<#b<<": "<<b<<" | "<<#c<<": "<<c<<endl;
#define sharingan cerr << "\N-------------------------------------------\N\N";
#define watch2(A,b) cerr <<#A<<": "<<A<<" | "<<#b<<": "<<b<< endl;
#define Yup ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);
#define watch(A) cerr <<#A<<": "<<A<<endl;
#define __gcd(A, b) __algo_gcd(A, b)
#define PI 3.14159265358979323846
#include<set>
#include<map>
#include<cmath>
#include<stack>
#include<queue>
#include<array>
#include<cstdio>
#include<bitset>
#include<vector>
#include<utility>
#include<sstream>
#include<cstring>
#include <climits>
#include <fstream>
#include<iostream>
#include<iomanip>
#include<algorithm>
#include <functional>
#include <unordered_map>
using namespace std;
#define mod 1000000007

int n, a, b;
vector<long long> v;

int go( long long s ){
    int ex = n - a - b;
    long long sum = 0;
    for( int i = 0; i < ex; i++ ){
        v.push_back(s);
        sum += s;
    }
    sum++;
    for( int i = 0; i < b; i++ ){
        v.push_back(sum);
        s = sum;
        if( sum > 500000*1LL ){
            return 0;
        }
        sum = sum + sum + 1;
    }
    for( int i = 0; i < a; i++ ){
        s++;
        v.push_back(s);
        if( s > 500000*1LL ){
            return 0;
        }
    }
    return 1;
}

int can(){
    int o = 0, w = 0;
    long long sum = 0;
    sum += v[0];
    for( int i = 1; i < n; i++ ){
        if( v[i] > sum ){
            w++;
        }
        else if( v[i] > v[i-1] ){
            o++;
        }
        sum += v[i];
    }
    if( a == o && b == w )return 1;
    return 0;
}

int main(){
    cin >> n >> a >> b;
    for( int i = 1; i < 100; i++ ){
        v.clear();
        if( go(i) ){
            if( !can() )continue;
            for( auto it : v ){
                cout << it << " ";
            }
            return 0;
        }
    }
    cout << "-1";
}


#define watch5(A,b,c,d,e) cerr<<#A<<": "<<A<<" | "<<#b<<": "<<b<<" | "<<#c<<": "<<c<<" | "<<#d<<": "<<d << " | "<<#e<<": "<<e<<endl;
#define watch4(A,b,c,d) cerr<<#A<<": "<<A<<" | "<<#b<<": "<<b<<" | "<<#c<<": "<<c<<" | "<<#d<<": "<<d<<endl;
#define watch3(A,b,c) cerr <<#A<<": "<<A<<" | "<<#b<<": "<<b<<" | "<<#c<<": "<<c<<endl;
#define sharingan cerr << "\N-------------------------------------------\N\N";
#define watch2(A,b) cerr <<#A<<": "<<A<<" | "<<#b<<": "<<b<< endl;
#define Yup ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);
#define watch(A) cerr <<#A<<": "<<A<<endl;
#define __gcd(A, b) __algo_gcd(A, b)
#define PI 3.14159265358979323846
#include<set>
#include<map>
#include<cmath>
#include<stack>
#include<queue>
#include<array>
#include<cstdio>
#include<bitset>
#include<vector>
#include<utility>
#include<sstream>
#include<cstring>
#include <climits>
#include <fstream>
#include<iostream>
#include<iomanip>
#include<algorithm>
#include <functional>
#include <unordered_map>
using namespace std;
#define mod 1000000007

int main(){
    int n, a, b;
    cin >> n >> a >> b;
    int ex = n - a - b;
    int sum = 0;
    for( int i = 0; i < ex; i++ ){
        cout << 2 << " ";
        sum += 2;
    }
    int pre = 2;
    for( int i = 0; i < a; i++ ){
        cout << pre+1 << " ";
        sum += pre+1;
        pre++;
    }
    for( int i = 0; i < b; i++ ){
        cout << sum+1 << " ";
        sum += sum+1;
    }
}


#define watch5(A,b,c,d,e) cerr<<#A<<": "<<A<<" | "<<#b<<": "<<b<<" | "<<#c<<": "<<c<<" | "<<#d<<": "<<d << " | "<<#e<<": "<<e<<endl;
#define watch4(A,b,c,d) cerr<<#A<<": "<<A<<" | "<<#b<<": "<<b<<" | "<<#c<<": "<<c<<" | "<<#d<<": "<<d<<endl;
#define watch3(A,b,c) cerr <<#A<<": "<<A<<" | "<<#b<<": "<<b<<" | "<<#c<<": "<<c<<endl;
#define sharingan cerr << "\N-------------------------------------------\N\N";
#define watch2(A,b) cerr <<#A<<": "<<A<<" | "<<#b<<": "<<b<< endl;
#define Yup ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);
#define watch(A) cerr <<#A<<": "<<A<<endl;
#define __gcd(A, b) __algo_gcd(A, b)
#define PI 3.14159265358979323846
#include<set>
#include<map>
#include<cmath>
#include<stack>
#include<queue>
#include<array>
#include<cstdio>
#include<bitset>
#include<vector>
#include<utility>
#include<sstream>
#include<cstring>
#include <climits>
#include <fstream>
#include<iostream>
#include<iomanip>
#include<algorithm>
#include <functional>
#include <unordered_map>
using namespace std;
#define mod 1000000007

int n, a, b;
vector<int> v;

int go( long long s ){
    int ex = n - a - b;
    long long sum = 0;
    for( int i = 0; i < ex; i++ ){
        v.push_back(s);
        sum += s;
    }
    for( int i = 0; i < a; i++ ){
        s++;
        v.push_back(s);
        sum += s;
    }
    sum++;
    for( int i = 0; i < b; i++ ){
        v.push_back(sum);
        if( sum > 500000*1LL ){
            return 0;
        }
        sum = sum + sum + 1;
    }
    return 1;
}

int main(){
    cin >> n >> a >> b;
    for( int i = 1; i < 100; i++ ){
        v.clear();
        if( go(i) ){
            for( auto it : v ){
                cout << it << " ";
            }
            return 0;
        }
    }
    cout << "-1";
}


#define watch5(A,b,c,d,e) cerr<<#A<<": "<<A<<" | "<<#b<<": "<<b<<" | "<<#c<<": "<<c<<" | "<<#d<<": "<<d << " | "<<#e<<": "<<e<<endl;
#define watch4(A,b,c,d) cerr<<#A<<": "<<A<<" | "<<#b<<": "<<b<<" | "<<#c<<": "<<c<<" | "<<#d<<": "<<d<<endl;
#define watch3(A,b,c) cerr <<#A<<": "<<A<<" | "<<#b<<": "<<b<<" | "<<#c<<": "<<c<<endl;
#define sharingan cerr << "\N-------------------------------------------\N\N";
#define watch2(A,b) cerr <<#A<<": "<<A<<" | "<<#b<<": "<<b<< endl;
#define Yup ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);
#define watch(A) cerr <<#A<<": "<<A<<endl;
#define __gcd(A, b) __algo_gcd(A, b)
#define PI 3.14159265358979323846
#include<set>
#include<map>
#include<cmath>
#include<stack>
#include<queue>
#include<array>
#include<cstdio>
#include<bitset>
#include<vector>
#include<utility>
#include<sstream>
#include<cstring>
#include <climits>
#include <fstream>
#include<iostream>
#include<iomanip>
#include<algorithm>
#include <functional>
#include <unordered_map>
using namespace std;
#define mod 1000000007

int n, a, b;
int A, B;
vector<long long> v;

int go( long long s ){
    int ex = n - a - b;
    long long sum = 0;
    v.push_back(s);
    sum += s;
    if( b > 0 )sum++;
    for( int i = 0; i < b; i++ ){
        v.push_back(sum);
        s = sum;
        if( sum > 500000*1LL ){
            return 0;
        }
        sum = sum + sum + 1;
    }
    for( int i = 0; i < a; i++ ){
        s++;
        if( s > sum ){
            s--;
            ex--;
            a++;
            v.push_back(s);
            sum += s;
        }
        else {
            v.push_back(s);
            if( s > 500000*1LL ){
                return 0;
            }
            sum += s;
        }
    }
    for( int i = 0; i < ex-1; i++ ){
        v.push_back(s);
        sum += s;
    }
    return 1;
}

int can(){
    // for( auto it : v ){
    //     cout << it << " ";
    // }
    // cout << "\n";
    int o = 0, w = 0;
    long long sum = 0;
    sum += v[0];
    for( int i = 1; i < n; i++ ){
        if( v[i] > sum ){
            w++;
        }
        else if( v[i] > v[i-1] ){
            o++;
        }
        sum += v[i];
    }
    //watch2(o, w);
    if( A == o && B == w )return 1;
    return 0;
}

int main(){
    cin >> n >> a >> b;
    A = a, B = b;
    for( int i = 1; i < 100; i++ ){
        v.clear();
        if( go(i) ){
            if( !can() )continue;
            for( int j = 0; j < n; j++ ){
                cout << v[j] << " ";
            }
            return 0;
        }
    }
    cout << "-1";
}


#include <bits/stdc++.h>
using namespace std;
int main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    int n,a,b;
    cin>>n>>a>>b;
    cout<<"1 ";
    int st=2;
    int sum=1;
    for(int i=0;i<b;i++)
    {
        cout<<st<<" ";
        st=st*2;
    }

    st/=2;
    for(int i=0;i<a;i++)
    {
        cout<<++st<<" ";
    }

    for(int i=0;i<n-a-b-1;i++)
    {
        cout<<"1 ";
    }

    cout<<"\n";

    return 0;
}


#include <bits/stdc++.h>
using namespace std;
int main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    long long int n,a,b;
    cin>>n>>a>>b;
    int st=2;
    int sum=1;
    if(n-a==1)
    {
        cout<<"-1\n";
        return 0;
    }

    cout<<"1 ";
    for(int i=0;i<b;i++)
    {
        cout<<st<<" ";
        st=st*2;
    }

    st/=2;
    for(int i=0;i<a;i++)
    {
        cout<<++st<<" ";
    }

    for(int i=0;i<n-a-b-1;i++)
    {
        cout<<"1 ";
    }

    cout<<"\n";

    return 0;
}


#include <bits/stdc++.h>
using namespace std;
int main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    long long int n,a,b;
    cin>>n>>a>>b;
    int st=2;
    int sum=1;
    if(n-a==1&&n!=1)
    {
        cout<<"-1\n";
        return 0;
    }

    cout<<"1 ";
    for(int i=0;i<b;i++)
    {
        cout<<st<<" ";
        st=st*2;
    }

    st/=2;
    for(int i=0;i<a;i++)
    {
        cout<<++st<<" ";
    }

    for(int i=0;i<n-a-b-1;i++)
    {
        cout<<"1 ";
    }

    cout<<"\n";

    return 0;
}


#include <bits/stdc++.h>
using namespace std;
int main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    long long int n,a,b;
    cin>>n>>a>>b;
    int st=2;
    int sum=1;
    if(n-a==1&&n!=1)
    {
        cout<<"-1\n";
        return 0;
    }

    cout<<"1 ";
    for(int i=0;i<b;i++)
    {
        cout<<st<<" ";
        st=st*2;
    }

    st/=2;
    for(int i=0;i<a;i++)
    {
        if(b!=0)
        cout<<++st<<" ";
        else
        {
            cout<<st++<<" ";
        }

    }

    for(int i=0;i<n-a-b-1;i++)
    {
        cout<<st<<" ";
    }

    cout<<"\n";

    return 0;
}


#include <bits/stdc++.h>
using namespace std;
int main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    long long int n,a,b;
    cin>>n>>a>>b;
    int st=2;
    int sum=1;
    if(n-a==1&&n!=1)
    {
        cout<<"-1\n";
        return 0;
    }

    cout<<"1 ";
    for(int i=0;i<b;i++)
    {
        cout<<st<<" ";
        st=st*2;
    }

    st/=2;
    for(int i=0;i<a;i++)
    {
        cout<<++st<<" ";
    }

    for(int i=0;i<n-a-b-1;i++)
    {
        cout<<st<<" ";
    }

    cout<<"\n";

    return 0;
}


#include <bits/stdc++.h>
using namespace std;
int main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    int n,a,b;
    cin>>n>>a>>b;
    int sum=0;
    for(int i=0;i<n-a-b;i++)
    {
        cout<<"1 ";
        sum++;
    }

    int st=2;
    for(int i=0;i<a;i++)
    {
        cout<<st<<" ";
        sum+=st;
        st++;
    }

    for(int i=0;i<b;i++)
    {
        cout<<sum+1<<" ";
        sum+=sum+1;
    }

    cout<<"\n";

    return 0;
}


#include<bits/stdc++.h>

using namespace std;

typedef long long ll;
#define mod 1000000007
#define l_chars "abcdefghijklmnopqrstuvwxyz"
#define rep(i, a, b) for(ll i = a; i < b; i++)
#define repc(i, a, b, c) for (ll i = a; a < b ? i < b : i > b; i += c)
#define mp make_pair
#define vec(type, name) vector< type > name
#define vecp(type1, type2, name) vector< pair < type1, type2 > >name
#define pb push_back
#define all(name) (name.begin(), name.end())
#define itt(name_con, name_it) auto name_it = name_con.begin()
#define repit(name_con, name_it)for(itt(name_con, name_it); name_it != name_con.end(); name_it++)
ll power(ll x, ll y);
ll modin(ll a);
#define fact(n, arr) ll arr[n];arr[0]=1;;rep(i, 1, n+1)arr[i]=arr[i-1]*i, arr[i]%=mod;
int main()
{
	ios_base::sync_with_stdio(false);
	cin.tie(NULL);
	int t = 1;
	//cin >> t;
	while(t--)
	{
		ll a, b, c;
		cin >> a >> c >> b;
		if(b == 0 and c == a-1 and (b+c != 0)){cout << -1;return 0;}
		ll arr[a], f = 0;
		arr[0] = 1;
		rep(i, 1, b+1){
			arr[i] = arr[i-1]*2;
		}
		if(b == 0)arr[1] = 1, b++;
		rep(i, 1, c+1){
			arr[i+b] = arr[i+b-1] + 1;
		}
		rep(i, b+c+1, a)arr[i] = 1;
		rep(i, 0, a)cout << arr[i] << " ";
	}
}
//
//
//
//
//
//important funct
ll power(ll x, ll y) {
    ll res = 1;x %= mod;
    while (y > 0) {
        if (y & 1)res = (res*x) % mod;
        y = y>>1;
        x = (x*x) % mod;
    }
    return res%mod;
}
ll modIn(ll a) {
	return power(a, mod-2);
}


#include<bits/stdc++.h>

using namespace std;

typedef long long ll;
#define mod 1000000007
#define l_chars "abcdefghijklmnopqrstuvwxyz"
#define rep(i, a, b) for(ll i = a; i < b; i++)
#define repc(i, a, b, c) for (ll i = a; a < b ? i < b : i > b; i += c)
#define mp make_pair
#define vec(type, name) vector< type > name
#define vecp(type1, type2, name) vector< pair < type1, type2 > >name
#define pb push_back
#define all(name) (name.begin(), name.end())
#define itt(name_con, name_it) auto name_it = name_con.begin()
#define repit(name_con, name_it)for(itt(name_con, name_it); name_it != name_con.end(); name_it++)
ll power(ll x, ll y);
ll modin(ll a);
#define fact(n, arr) ll arr[n];arr[0]=1;;rep(i, 1, n+1)arr[i]=arr[i-1]*i, arr[i]%=mod;
int main()
{
	ios_base::sync_with_stdio(false);
	cin.tie(NULL);
	int t = 1;
	//cin >> t;
	while(t--)
	{
		ll a, b, c;
		cin >> a >> c >> b;
		if(b == 0 and c == a-1 and (b+c != 0)){cout << -1;return 0;}
		ll arr[a];
		arr[0] = 1;
		rep(i, 1, b+1){
			arr[i] = arr[i-1]*2;
			if(arr[i] > 50000){cout << -1;return 0;}
		}
		rep(i, b+1, b+c+1){
			if(b == 0 and i == 1){arr[1] = 1;continue;}
			arr[i] = arr[i-1] + 1;
			if(arr[i] > 50000){cout << -1;return 0;}
		}
		rep(i, b+c+1, a)arr[i] = 1;
		rep(i, 0, a)cout << arr[i] << " ";
	}
}
//
//
//
//
//
//important funct
ll power(ll x, ll y) {
    ll res = 1;x %= mod;
    while (y > 0) {
        if (y & 1)res = (res*x) % mod;
        y = y>>1;
        x = (x*x) % mod;
    }
    return res%mod;
}
ll modIn(ll a) {
	return power(a, mod-2);
}


#include<bits/stdc++.h>

using namespace std;

typedef long long ll;
#define mod 1000000007
#define l_chars "abcdefghijklmnopqrstuvwxyz"
#define rep(i, a, b) for(ll i = a; i < b; i++)
#define repc(i, a, b, c) for (ll i = a; a < b ? i < b : i > b; i += c)
#define mp make_pair
#define vec(type, name) vector< type > name
#define vecp(type1, type2, name) vector< pair < type1, type2 > >name
#define pb push_back
#define all(name) (name.begin(), name.end())
#define itt(name_con, name_it) auto name_it = name_con.begin()
#define repit(name_con, name_it)for(itt(name_con, name_it); name_it != name_con.end(); name_it++)
ll power(ll x, ll y);
ll modin(ll a);
#define fact(n, arr) ll arr[n];arr[0]=1;;rep(i, 1, n+1)arr[i]=arr[i-1]*i, arr[i]%=mod;
int main()
{
	ios_base::sync_with_stdio(false);
	cin.tie(NULL);
	int t = 1;
	//cin >> t;
	while(t--)
	{
		ll a, b, c;
		cin >> a >> c >> b;
		if(b == 0 and c == a-1 and (b+c != 0)){cout << -1;return 0;}
		ll arr[a];
		arr[0] = 1;
		rep(i, 1, b+1){
			arr[i] = arr[i-1]*2;
			if(arr[i] > 50000){cout << -1;return 0;}
		}
		if(c == 0)arr[1] = 1;
		rep(i, (b+1+(c==0)), (b+c+1+(c==0))){
			arr[i] = arr[i-1] + 1;
			if(arr[i] > 50000){cout << -1;return 0;}
		}
		rep(i, b+c+1, a)arr[i] = 1;
		rep(i, 0, a)cout << arr[i] << " ";
	}
}
//
//
//
//
//
//important funct
ll power(ll x, ll y) {
    ll res = 1;x %= mod;
    while (y > 0) {
        if (y & 1)res = (res*x) % mod;
        y = y>>1;
        x = (x*x) % mod;
    }
    return res%mod;
}
ll modIn(ll a) {
	return power(a, mod-2);
}


#include<bits/stdc++.h>

using namespace std;

typedef long long ll;
#define mod 1000000007
#define l_chars "abcdefghijklmnopqrstuvwxyz"
#define rep(i, a, b) for(ll i = a; i < b; i++)
#define repc(i, a, b, c) for (ll i = a; a < b ? i < b : i > b; i += c)
#define mp make_pair
#define vec(type, name) vector< type > name
#define vecp(type1, type2, name) vector< pair < type1, type2 > >name
#define pb push_back
#define all(name) (name.begin(), name.end())
#define itt(name_con, name_it) auto name_it = name_con.begin()
#define repit(name_con, name_it)for(itt(name_con, name_it); name_it != name_con.end(); name_it++)
ll power(ll x, ll y);
ll modin(ll a);
#define fact(n, arr) ll arr[n];arr[0]=1;;rep(i, 1, n+1)arr[i]=arr[i-1]*i, arr[i]%=mod;
int main()
{
	ios_base::sync_with_stdio(false);
	cin.tie(NULL);
	int t = 1;
	//cin >> t;
	while(t--)
	{
		ll a, b, c;
		cin >> a >> b >> c;
		cout << a << " ";
		ll sum = a;
		rep(i, 0, b){cout << sum + 1 << " ";sum += sum+1;}
		rep(i, 0, c)cout << sum + i << " ";
		rep(i, 0, a-b-c-1)cout << a - b - c - i - 1 << " ";
	}
}
//
//
//
//
//
//important funct
ll power(ll x, ll y) {
    ll res = 1;x %= mod;
    while (y > 0) {
        if (y & 1)res = (res*x) % mod;
        y = y>>1;
        x = (x*x) % mod;
    }
    return res%mod;
}
ll modIn(ll a) {
	return power(a, mod-2);
}


#include<bits/stdc++.h>

using namespace std;

typedef long long ll;
#define mod 1000000007
#define l_chars "abcdefghijklmnopqrstuvwxyz"
#define rep(i, a, b) for(ll i = a; i < b; i++)
#define repc(i, a, b, c) for (ll i = a; a < b ? i < b : i > b; i += c)
#define mp make_pair
#define vec(type, name) vector< type > name
#define vecp(type1, type2, name) vector< pair < type1, type2 > >name
#define pb push_back
#define all(name) (name.begin(), name.end())
#define itt(name_con, name_it) auto name_it = name_con.begin()
#define repit(name_con, name_it)for(itt(name_con, name_it); name_it != name_con.end(); name_it++)
ll power(ll x, ll y);
ll modin(ll a);
#define fact(n, arr) ll arr[n];arr[0]=1;;rep(i, 1, n+1)arr[i]=arr[i-1]*i, arr[i]%=mod;
int main()
{
	ios_base::sync_with_stdio(false);
	cin.tie(NULL);
	int t = 1;
	//cin >> t;
	while(t--)
	{
		ll a, b, c;
		cin >> a >> c >> b;
		if(b == 0 and c == a-1 and (b+c != 0)){cout << -1;return 0;}
		ll arr[a];
		arr[0] = 1;
		rep(i, 1, b+1){
			arr[i] = arr[i-1]*2;
			if(arr[i] > 50000){cout << -1;return 0;}
		}
		if(b == 0)arr[1] = 1;
		rep(i, (b+1+(b==0)), (b+c+1+(b==0))){
			arr[i] = arr[i-1] + 1;
			if(arr[i] > 50000){cout << -1;return 0;}
		}
		rep(i, b+c+1, a)arr[i] = 1;
		rep(i, 0, a)cout << arr[i] << " ";
	}
}
//
//
//
//
//
//important funct
ll power(ll x, ll y) {
    ll res = 1;x %= mod;
    while (y > 0) {
        if (y & 1)res = (res*x) % mod;
        y = y>>1;
        x = (x*x) % mod;
    }
    return res%mod;
}
ll modIn(ll a) {
	return power(a, mod-2);
}


#include<bits/stdc++.h>

using namespace std;

typedef long long ll;
#define mod 1000000007
#define l_chars "abcdefghijklmnopqrstuvwxyz"
#define rep(i, a, b) for(ll i = a; i < b; i++)
#define repc(i, a, b, c) for (ll i = a; a < b ? i < b : i > b; i += c)
#define mp make_pair
#define vec(type, name) vector< type > name
#define vecp(type1, type2, name) vector< pair < type1, type2 > >name
#define pb push_back
#define all(name) (name.begin(), name.end())
#define itt(name_con, name_it) auto name_it = name_con.begin()
#define repit(name_con, name_it)for(itt(name_con, name_it); name_it != name_con.end(); name_it++)
ll power(ll x, ll y);
ll modin(ll a);
#define fact(n, arr) ll arr[n];arr[0]=1;;rep(i, 1, n+1)arr[i]=arr[i-1]*i, arr[i]%=mod;
int main()
{
	ios_base::sync_with_stdio(false);
	cin.tie(NULL);
	int t = 1;
	//cin >> t;
	while(t--)
	{
		ll a, b, c;
		cin >> a >> c >> b;
		ll arr[a];
		arr[0] = 1;
		rep(i, 1, b+1){
			arr[i] = arr[i-1]*2;
			if(arr[i] > 50000){cout << -1;return 0;}
		}
		rep(i, b+1, b+c+1){
			arr[i] = arr[i-1] + 1;
			if(arr[i] > 50000){cout << -1;return 0;}
		}
		rep(i, b+c+1, a)arr[i] = 1;
		rep(i, 0, a)cout << arr[i] << " ";
	}
}
//
//
//
//
//
//important funct
ll power(ll x, ll y) {
    ll res = 1;x %= mod;
    while (y > 0) {
        if (y & 1)res = (res*x) % mod;
        y = y>>1;
        x = (x*x) % mod;
    }
    return res%mod;
}
ll modIn(ll a) {
	return power(a, mod-2);
}


#include<bits/stdc++.h>

using namespace std;

typedef long long ll;
#define mod 1000000007
#define l_chars "abcdefghijklmnopqrstuvwxyz"
#define rep(i, a, b) for(ll i = a; i < b; i++)
#define repc(i, a, b, c) for (ll i = a; a < b ? i < b : i > b; i += c)
#define mp make_pair
#define vec(type, name) vector< type > name
#define vecp(type1, type2, name) vector< pair < type1, type2 > >name
#define pb push_back
#define all(name) (name.begin(), name.end())
#define itt(name_con, name_it) auto name_it = name_con.begin()
#define repit(name_con, name_it)for(itt(name_con, name_it); name_it != name_con.end(); name_it++)
ll power(ll x, ll y);
ll modin(ll a);
#define fact(n, arr) ll arr[n];arr[0]=1;;rep(i, 1, n+1)arr[i]=arr[i-1]*i, arr[i]%=mod;
int main()
{
	ios_base::sync_with_stdio(false);
	cin.tie(NULL);
	int t = 1;
	//cin >> t;
	while(t--)
	{
		ll a, b, c;
		cin >> a >> c >> b;
		ll arr[a];
		arr[0] = 1;
		rep(i, 1, b+1){
			arr[i] = arr[i-1]*2;
			if(arr[i] > 50000){cout << -1;return 0;}
		}
		rep(i, 1, c+1){
			arr[i+b] = arr[i+b-1] + 1;
			if(arr[i] > 50000){cout << -1;return 0;}
		}
		rep(i, 0, a-b-c-1)arr[i+b+c] = 1;
		rep(i, 0, a)cout << arr[i] << " ";
	}
}
//
//
//
//
//
//important funct
ll power(ll x, ll y) {
    ll res = 1;x %= mod;
    while (y > 0) {
        if (y & 1)res = (res*x) % mod;
        y = y>>1;
        x = (x*x) % mod;
    }
    return res%mod;
}
ll modIn(ll a) {
	return power(a, mod-2);
}


#include<bits/stdc++.h>

using namespace std;

typedef long long ll;
#define mod 1000000007
#define l_chars "abcdefghijklmnopqrstuvwxyz"
#define rep(i, a, b) for(ll i = a; i < b; i++)
#define repc(i, a, b, c) for (ll i = a; a < b ? i < b : i > b; i += c)
#define mp make_pair
#define vec(type, name) vector< type > name
#define vecp(type1, type2, name) vector< pair < type1, type2 > >name
#define pb push_back
#define all(name) (name.begin(), name.end())
#define itt(name_con, name_it) auto name_it = name_con.begin()
#define repit(name_con, name_it)for(itt(name_con, name_it); name_it != name_con.end(); name_it++)
ll power(ll x, ll y);
ll modin(ll a);
#define fact(n, arr) ll arr[n];arr[0]=1;;rep(i, 1, n+1)arr[i]=arr[i-1]*i, arr[i]%=mod;
int main()
{
	ios_base::sync_with_stdio(false);
	cin.tie(NULL);
	int t = 1;
	//cin >> t;
	while(t--)
	{
		ll a, b, c;
		cin >> a >> c >> b;
		if(b == 0 and c == a-1){cout << -1;return 0;}
		ll arr[a];
		arr[0] = 1;
		rep(i, 1, b+1){
			arr[i] = arr[i-1]*2;
			if(arr[i] > 50000){cout << -1;return 0;}
		}
		rep(i, b+1, b+c+1){
			if(b == 0 and i == 1){arr[1] = 1;continue;}
			arr[i] = arr[i-1] + 1;
			if(arr[i] > 50000){cout << -1;return 0;}
		}
		rep(i, b+c+1, a)arr[i] = 1;
		rep(i, 0, a)cout << arr[i] << " ";
	}
}
//
//
//
//
//
//important funct
ll power(ll x, ll y) {
    ll res = 1;x %= mod;
    while (y > 0) {
        if (y & 1)res = (res*x) % mod;
        y = y>>1;
        x = (x*x) % mod;
    }
    return res%mod;
}
ll modIn(ll a) {
	return power(a, mod-2);
}


#include<bits/stdc++.h>

using namespace std;

typedef long long ll;
#define mod 1000000007
#define l_chars "abcdefghijklmnopqrstuvwxyz"
#define rep(i, a, b) for(ll i = a; i < b; i++)
#define repc(i, a, b, c) for (ll i = a; a < b ? i < b : i > b; i += c)
#define mp make_pair
#define vec(type, name) vector< type > name
#define vecp(type1, type2, name) vector< pair < type1, type2 > >name
#define pb push_back
#define all(name) (name.begin(), name.end())
#define itt(name_con, name_it) auto name_it = name_con.begin()
#define repit(name_con, name_it)for(itt(name_con, name_it); name_it != name_con.end(); name_it++)
ll power(ll x, ll y);
ll modin(ll a);
#define fact(n, arr) ll arr[n];arr[0]=1;;rep(i, 1, n+1)arr[i]=arr[i-1]*i, arr[i]%=mod;
int main()
{
	ios_base::sync_with_stdio(false);
	cin.tie(NULL);
	int t = 1;
	//cin >> t;
	while(t--)
	{
		ll a, b, c;
		cin >> a >> c >> b;
		if(b == 0 and c == a-1 and (b+c != 0)){cout << -1;return 0;}
		ll arr[a];
		arr[0] = 1;
		rep(i, 1, b+1){
			arr[i] = arr[i-1]*2;
			if(arr[i] > 50000){cout << -1;return 0;}
		}
		if(b == 0)arr[0] = 5;
		rep(i, b+1, b+c+1){
			arr[i] = arr[i-1] + 1;
			if(arr[i] > 50000){cout << -1;return 0;}
		}
		rep(i, b+c+1, a)arr[i] = 1;
		rep(i, 0, a)cout << arr[i] << " ";
	}
}
//
//
//
//
//
//important funct
ll power(ll x, ll y) {
    ll res = 1;x %= mod;
    while (y > 0) {
        if (y & 1)res = (res*x) % mod;
        y = y>>1;
        x = (x*x) % mod;
    }
    return res%mod;
}
ll modIn(ll a) {
	return power(a, mod-2);
}


#include<bits/stdc++.h>

using namespace std;

typedef long long ll;
#define mod 1000000007
#define l_chars "abcdefghijklmnopqrstuvwxyz"
#define rep(i, a, b) for(ll i = a; i < b; i++)
#define repc(i, a, b, c) for (ll i = a; a < b ? i < b : i > b; i += c)
#define mp make_pair
#define vec(type, name) vector< type > name
#define vecp(type1, type2, name) vector< pair < type1, type2 > >name
#define pb push_back
#define all(name) (name.begin(), name.end())
#define itt(name_con, name_it) auto name_it = name_con.begin()
#define repit(name_con, name_it)for(itt(name_con, name_it); name_it != name_con.end(); name_it++)
ll power(ll x, ll y);
ll modin(ll a);
#define fact(n, arr) ll arr[n];arr[0]=1;;rep(i, 1, n+1)arr[i]=arr[i-1]*i, arr[i]%=mod;
int main()
{
	ios_base::sync_with_stdio(false);
	cin.tie(NULL);
	int t = 1;
	//cin >> t;
	while(t--)
	{
		ll a, b, c;
		cin >> a >> c >> b;
		cout << a << " ";
		ll sum = a;
		rep(i, 0, b){cout << sum + 1 << " ";sum += sum+1;}
		rep(i, 0, c)cout << sum + i << " ";
		rep(i, 0, a-b-c-1)cout << a - b - c - i - 1 << " ";
	}
}
//
//
//
//
//
//important funct
ll power(ll x, ll y) {
    ll res = 1;x %= mod;
    while (y > 0) {
        if (y & 1)res = (res*x) % mod;
        y = y>>1;
        x = (x*x) % mod;
    }
    return res%mod;
}
ll modIn(ll a) {
	return power(a, mod-2);
}


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

int main() {
	int n, a, b; scanf("%d%d%d", &n, &a, &b);

	vector<int> ans = {1};
	ans.reserve(n);
	n--;

	long long sum = 1;
	int last = 1;

	for (int i = 1; i <= b; i++) {
		if (sum + 1 > 50000) {
			puts("-1");
			return 0;
		}
		ans.push_back(sum + 1);
		last = sum + 1;
		sum += sum + 1;
	}

	for (int i = 1; i <= n - a - b; i++) {
		ans.push_back(last);
		sum++;
	}

	for (int i = 1; i <= a; i++) {
		ans.push_back(last+1);
		last++;
		sum += last;

		if (last > 50000) {
			puts("-1");
			return 0;
		}
	}

	sum = ans[0];
	for (int i = 1; i <= n; i++) {
		if (ans[i] > sum) b--;
		else if (ans[i] > ans[i-1]) a--;
		sum += ans[i];
	}

	if (a or b) puts("-1");
	else for (int i : ans) printf("%d ", i);
	printf("\n");
}


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

int main() {
	int n, a, b; scanf("%d%d%d", &n, &a, &b);

	vector<int> ans = {1};
	ans.reserve(n);
	n--;

	long long sum = 1;
	int last = 1;

	for (int i = 1; i <= b; i++) {
		if (sum + 1 > 50000) {
			puts("-1");
			return 0;
		}
		ans.push_back(sum + 1);
		last = sum + 1;
		sum += sum + 1;
	}

	for (int i = 1; i <= n - a - b; i++) {
		ans.push_back(last);
		sum++;
	}

	for (int i = 1; i <= a; i++) {
		ans.push_back(last+1);
		last++;
		sum += last;

		if (last > 50000) {
			puts("-1");
			return 0;
		}
	}

	for (int i : ans) printf("%d ", i);
	printf("\n");
}


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

int main() {
	int n, a, b; scanf("%d%d%d", &n, &a, &b);

	vector<int> ans = {1};
	ans.reserve(n);
	n--;

	long long sum = 1;
	int last = 1;

	for (int i = 1; i <= b; i++) {
		if (sum + 1 > 50000) {
			puts("-1");
			return 0;
		}
		ans.push_back(sum + 1);
		last = sum + 1;
		sum += sum + 1;
	}

	for (int i = 1; i <= n - a - b; i++) {
		ans.push_back(last);
		sum++;
	}

	for (int i = 1; i <= a; i++) {
		ans.push_back(last+1);
		last++;
		sum += last;

		if (last > 50000) {
			puts("-1");
			return 0;
		}
	}

	sum = ans[0];
	for (int i = 1; i <= n; i++) {
		if (ans[i] > sum) b--;
		else if (ans[i] > ans[i-1]) a--;
	}

	if (a or b) puts("-1");
	else for (int i : ans) printf("%d ", i);
	printf("\n");
}


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

int main() {
	int n, a, b; scanf("%d%d%d", &n, &a, &b);

	vector<int> ans = {1};
	ans.reserve(n);
	n--;

	long long sum = 1;
	int last = 1;

	for (int i = 1; i <= b; i++) {
		if (sum + 1 > 50000) {
			puts("-1");
			return 0;
		}
		ans.push_back(sum + 1);
		sum += sum + 1;
		last = sum + 1;
	}

	for (int i = 1; i <= n - a - b; i++) {
		ans.push_back(last);
		sum++;
	}

	for (int i = 1; i <= a; i++) {
		ans.push_back(last+1);
		last++;
		sum += last;

		if (last > 50000) {
			puts("-1");
			return 0;
		}
	}

	for (int i : ans) printf("%d ", i);
	printf("\n");
}


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

int main() {
	int n, a, b; scanf("%d%d%d", &n, &a, &b);

	vector<int> ans;
	ans.reserve(n);

	long long sum = 0;
	for (int i = 1; i <= n - a - b; i++) {
		ans.push_back(1);
		sum++;
	}

	for (int i = 1; i <= a; i++) {
		ans.push_back(i+1);
		sum += i + 1;
	}

	for (int i = 1; i <= b; i++) {
		if (sum + 1 > 50000) {
			puts("-1");
			return 0;
		}
		ans.push_back(sum + 1);
		sum += sum + 1;
	}

	for (int i : ans) printf("%d ", i);
	printf("\n");
}


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

int main() {
	int n, a, b; scanf("%d%d%d", &n, &a, &b);

	vector<int> ans;
	ans.reserve(n);

	long long sum = 0;
	for (int i = 1; i <= n - a - b; i++) {
		ans.push_back(1);
		sum++;
	}

	for (int i = 1; i <= a; i++) {
		ans.push_back(i+1);
		if (i+1 > sum) a++, b--;
		if (b < 0) {
			puts("-1");
			return 0;
		}
		sum += i + 1;
	}

	for (int i = 1; i <= b; i++) {
		if (sum + 1 > 50000) {
			puts("-1");
			return 0;
		}
		ans.push_back(sum + 1);
		sum += sum + 1;
	}

	for (int i : ans) printf("%d ", i);
	printf("\n");
}


/**/
#include <cstdio>
#include <cstring>
#include <cmath>
#include <cctype>
#include <iostream>
#include <algorithm>
#include <map>
#include <set>
#include <vector>
#include <string>
#include <stack>
#include <queue>

typedef long long LL;
using namespace std;

int main()
{
	//freopen("in.txt", "r", stdin);
	//freopen("out.txt", "w", stdout);

	int n, a, b;
	scanf("%d%d%d", &n, &a, &b);
	if(a == 0 && b == 0){
		printf("1");
		n--;
		while (n){
			n--;
			printf(" 1");
		}
		return 0;
	}
	int ss = 1;
	printf("1");
	n--;
	if (n == 1){
		if (b){
			printf("2\n");
			return 0;
		}
		printf("1\n");
		return 0;
	}
	printf(" 1");
	ss++;
	n--;
	while(b){
		b--;
		n--;
		printf(" %d", ss+1);
		if(!b){
			break;
		}
		ss += ss + 1;
	}
	ss++;
	while(a){
		a--;
		n--;
		printf(" %d", ss+1);
		ss ++;
	}
	while (n){
		n--;
		printf(" %d", ss);
	}
	printf("\n");

	return 0;
}
/**/


/**/
#include <cstdio>
#include <cstring>
#include <cmath>
#include <cctype>
#include <iostream>
#include <algorithm>
#include <map>
#include <set>
#include <vector>
#include <string>
#include <stack>
#include <queue>

typedef long long LL;
using namespace std;

int main()
{
	//freopen("in.txt", "r", stdin);
	//freopen("out.txt", "w", stdout);

	int n, a, b;
	scanf("%d%d%d", &n, &a, &b);
	if(a == 0 && b == 0){
		printf("1");
		n--;
		while (n){
			n--;
			printf(" 1");
		}
		return 0;
	}
	int ss = 1;
	printf("1");
	n--;
	if (n == 1){
		if (b){
			printf("2\n");
			return 0;
		}
		printf("1\n");
		return 0;
	}
	printf(" 1");
	ss++;
	n--;
	if (!n && (a || b)){
		printf("-1\n");
		return 0;
	}
	while(b){
		b--;
		n--;
		printf(" %d", ss+1);
		if(!n && (a || b)){
			printf("-1\n");
			return 0;
		}
		if(!b){
			break;
		}
		ss += ss + 1;
	}
	ss++;
	if(!n && a){
		printf("-1\n");
		return 0;
	}
	while(a){
		a--;
		n--;
		printf(" %d", ss+1);
		if(!n && a){
			printf("-1\n");
			return 0;
		}
		ss ++;
	}
	while (n){
		n--;
		printf(" %d", ss);
	}
	printf("\n");

	return 0;
}
/**/


/**/
#include <cstdio>
#include <cstring>
#include <cmath>
#include <cctype>
#include <iostream>
#include <algorithm>
#include <map>
#include <set>
#include <vector>
#include <string>
#include <stack>
#include <queue>

typedef long long LL;
using namespace std;

int main()
{
	//freopen("in.txt", "r", stdin);
	//freopen("out.txt", "w", stdout);

	int n, a, b;
	scanf("%d%d%d", &n, &a, &b);
	if(a == 0 && b == 0){
		printf("1");
		n--;
		while (n){
			n--;
			printf(" 1");
		}
		return 0;
	}
	if( n == 2 || a == 1){
		printf("%d\n", -1);
		return 0;
	}
	int ss = 1;
	printf("1");
	n--;
	if(!n){
		return 0;
	}
	if (n == 1){
		if (b){
			printf(" 2\n");
			return 0;
		}
		printf(" 1\n");
		return 0;
	}
	while(b){
		b--;
		n--;
		printf(" %d", ss+1);
		if(!b){
			break;
		}
		ss += ss + 1;
	}
	ss++;
	while(a){
		a--;
		n--;
		printf(" %d", ss+1);
		ss ++;
	}
	while (n>0){
		n--;
		printf(" %d", ss);
	}
	printf("\n");

	return 0;
}
/**/


/**/
#include <cstdio>
#include <cstring>
#include <cmath>
#include <cctype>
#include <iostream>
#include <algorithm>
#include <map>
#include <set>
#include <vector>
#include <string>
#include <stack>
#include <queue>

typedef long long LL;
using namespace std;

int main()
{
	//freopen("in.txt", "r", stdin);
	//freopen("out.txt", "w", stdout);

	int n, a, b;
	scanf("%d%d%d", &n, &a, &b);
	int s = 2;
	long long ss=1;
	printf("1");
	n--;
	if (n == 1){
		if (b){
			printf("2\n");
			return 0;
		}
		printf("1\n");
		return 0;
	}
	printf(" 1");
	ss++;
	n--;
	while(a){
		a--;
		n--;
		printf(" %d", s);
		ss += s;
		s++;
	}
	while(b){
		b--;
		n--;
		printf(" %lld", ss+1);
		ss += ss + 1;
	}
	while (n){
		n--;
		printf(" %d", ss);
	}
	printf("\n");

	return 0;
}
/**/


/**/
#include <cstdio>
#include <cstring>
#include <cmath>
#include <cctype>
#include <iostream>
#include <algorithm>
#include <map>
#include <set>
#include <vector>
#include <string>
#include <stack>
#include <queue>

typedef long long LL;
using namespace std;

int main()
{
	//freopen("in.txt", "r", stdin);
	//freopen("out.txt", "w", stdout);

	int n, a, b;
	scanf("%d%d%d", &n, &a, &b);
	if(a == 0 && b == 0){
		printf("1");
		n--;
		while (n){
			n--;
			printf(" 1");
		}
		return 0;
	}
	if (n == (a-1)){
		printf("-1\n");
		return 0;
	}
	int ss = 1;
	printf("1");
	n--;
	if(!n){
		return 0;
	}
	if (n == 1){
		if (b){
			printf(" 2\n");
			return 0;
		}
		printf(" 1\n");
		return 0;
	}
	if (!b){
		printf(" 1");
		n--;
	}
	while(b){
		b--;
		n--;
		printf(" %d", ss+1);
		if(!b){
			ss++;
			break;
		}
		ss += ss + 1;
	}
	while(a){
		a--;
		n--;
		printf(" %d", ss+1);
		ss ++;
	}
	while (n>0){
		n--;
		printf(" %d", ss);
	}
	printf("\n");

	return 0;
}
/**/


/**/
#include <cstdio>
#include <cstring>
#include <cmath>
#include <cctype>
#include <iostream>
#include <algorithm>
#include <map>
#include <set>
#include <vector>
#include <string>
#include <stack>
#include <queue>

typedef long long LL;
using namespace std;

int main()
{
	//freopen("in.txt", "r", stdin);
	//freopen("out.txt", "w", stdout);

	int n, a, b;
	scanf("%d%d%d", &n, &a, &b);
	if(a == 0 && b == 0){
		printf("1");
		n--;
		while (n){
			n--;
			printf(" 1");
		}
		return 0;
	}
	if ((n-1) == a){
		printf("-1\n");
		return 0;
	}
	int ss = 1;
	printf("1");
	n--;
	if(!n){
		return 0;
	}
	if (n == 1){
		if (b){
			printf(" 2\n");
			return 0;
		}
		printf(" 1\n");
		return 0;
	}
	if (!b){
		printf(" 1");
		n--;
	}
	while(b){
		b--;
		n--;
		printf(" %d", ss+1);
		if(!b){
			ss++;
			break;
		}
		ss += ss + 1;
	}
	while(a){
		a--;
		n--;
		printf(" %d", ss+1);
		ss ++;
	}
	while (n>0){
		n--;
		printf(" %d", ss);
	}
	printf("\n");

	return 0;
}
/**/


/**/
#include <cstdio>
#include <cstring>
#include <cmath>
#include <cctype>
#include <iostream>
#include <algorithm>
#include <map>
#include <set>
#include <vector>
#include <string>
#include <stack>
#include <queue>

typedef long long LL;
using namespace std;

int main()
{
	//freopen("in.txt", "r", stdin);
	//freopen("out.txt", "w", stdout);

	int n, a, b;
	scanf("%d%d%d", &n, &a, &b);
	int ss = 1;
	printf("1");
	n--;
	if (n == 1){
		if (b){
			printf("2\n");
			return 0;
		}
		printf("1\n");
		return 0;
	}
	printf(" 1");
	ss++;
	n--;
	while(b){
		b--;
		n--;
		printf(" %d", ss+1);
		if(!b){
			break;
		}
		ss += ss + 1;
	}
	ss++;
	while(a){
		a--;
		n--;
		printf(" %d", ss+1);
		ss ++;
	}
	while (n){
		n--;
		printf(" %d", ss);
	}
	printf("\n");

	return 0;
}
/**/


/**/
#include <cstdio>
#include <cstring>
#include <cmath>
#include <cctype>
#include <iostream>
#include <algorithm>
#include <map>
#include <set>
#include <vector>
#include <string>
#include <stack>
#include <queue>

typedef long long LL;
using namespace std;

int main()
{
	//freopen("in.txt", "r", stdin);
	//freopen("out.txt", "w", stdout);

	int n, a, b;
	scanf("%d%d%d", &n, &a, &b);
	if(a == 0 && b == 0){
		printf("1");
		n--;
		while (n){
			n--;
			printf(" 1");
		}
		return 0;
	}
	if( n == 2 || a == 1){
		printf("-1\n");
		return 0;
	}
	int ss = 1;
	printf("1");
	n--;
	if(!n){
		return 0;
	}
	if (n == 1){
		if (b){
			printf(" 2\n");
			return 0;
		}
		printf(" 1\n");
		return 0;
	}
	printf(" 1");
	ss++;
	n--;
	if (!n && (a || b)){
		printf("-1\n");
		return 0;
	}
	while(b){
		b--;
		n--;
		printf(" %d", ss+1);
		if(!n && (a || b)){
			printf("-1\n");
			return 0;
		}
		if(!b){
			break;
		}
		ss += ss + 1;
	}
	ss++;
	if(!n && a){
		printf("-1\n");
		return 0;
	}
	while(a){
		a--;
		n--;
		printf(" %d", ss+1);
		if(!n && a){
			printf("-1\n");
			return 0;
		}
		ss ++;
	}
	while (n){
		n--;
		printf(" %d", ss);
	}
	printf("\n");

	return 0;
}
/**/


/**/
#include <cstdio>
#include <cstring>
#include <cmath>
#include <cctype>
#include <iostream>
#include <algorithm>
#include <map>
#include <set>
#include <vector>
#include <string>
#include <stack>
#include <queue>

typedef long long LL;
using namespace std;

int main()
{
	//freopen("in.txt", "r", stdin);
	//freopen("out.txt", "w", stdout);

	int n, a, b;
	scanf("%d%d%d", &n, &a, &b);
	if(a == 0 && b == 0){
		printf("1");
		n--;
		while (n){
			n--;
			printf(" 1");
		}
		return 0;
	}
	if (a && !b){
		printf("-1\n");
		return 0;
	}
	int ss = 1;
	printf("1");
	n--;
	if(!n){
		return 0;
	}
	if (n == 1){
		if (b){
			printf(" 2\n");
			return 0;
		}
		printf(" 1\n");
		return 0;
	}
	while(b){
		b--;
		n--;
		printf(" %d", ss+1);
		if(!b){
			break;
		}
		ss += ss + 1;
	}
	ss++;
	while(a){
		a--;
		n--;
		printf(" %d", ss+1);
		ss ++;
	}
	while (n>0){
		n--;
		printf(" %d", ss);
	}
	printf("\n");

	return 0;
}
/**/


#include<bits/stdc++.h>
#define ll long long
#define ld long double
#define all(x) (x.begin()),(x.end())
#define allr(x) (x.rbegin()),(x.rend())
#define sz(x)  ((ll)x.size())
#define FAST_IO ios_base :: sync_with_stdio(false),cin.tie(nullptr),cout.tie(nullptr);
using namespace std;
#ifdef LOCAL
#include "uj.h"
#endif

int N,a,b;
void test_case(){
	cin >> N >> a >> b;
	if(N == 1) cout << 1 << endl;
	else if(a == N-1) cout << -1 << endl;
	else{
		vector<int> ans(N);
		if(b == 0) ans[0] = 2,ans[1] = 1;
		else ans[0] = 1,ans[1] = 2,--b;

		int curr = 3,prev_sum = 3;
		for(int i = 2;i<N;++i){
			if(a > 0){
				ans[i] = curr++;
				prev_sum += ans[i];
				--a;
			}
			else if(b > 0){
				ans[i] = prev_sum + 1;
				prev_sum += ans[i];
				--b;
			}
			else
				ans[i] = 1;
		}
		if(prev_sum > 50000 || curr > 50000) cout << -1 ;
		else
			for(auto & el : ans)
				cout << el << ' ';
	}
	return;

}

int main(){
	FAST_IO;
	int tt;
	//cin >> tt;
	tt = 1;
	for(int i = 0;i<tt;++i){
		test_case();
	}
#ifndef ONLINE_JUDGE
 	cerr << "Running Time: " << 1.0 * clock() / CLOCKS_PER_SEC << " s.\n";
#endif
	return 0;
}


#include<bits/stdc++.h>
#define ll long long
#define ld long double
#define all(x) (x.begin()),(x.end())
#define allr(x) (x.rbegin()),(x.rend())
#define sz(x)  ((ll)x.size())
#define FAST_IO ios_base :: sync_with_stdio(false),cin.tie(nullptr),cout.tie(nullptr);
using namespace std;
#ifdef LOCAL
#include "uj.h"
#endif

int N,a,b;
void test_case(){
	cin >> N >> a >> b;
	++a;
	int prev_sum = 0,curr = 1;
	for(int i = 0;i<N;++i){
		if(a > 0){
			cout<< curr << ' ';
			prev_sum += curr++;
			--a;
		}
		else if(b > 0){
			cout << prev_sum + 1 << ' ';
			prev_sum += prev_sum + 1;
			--b;
		}
		else
			cout << 1 << ' ';
		if(prev_sum < curr) --b;
		assert(prev_sum <= 50000);
		assert(curr <= 50000);
	}
	cout << endl;
	return;
}

int main(){
	FAST_IO;
	int tt;
	//cin >> tt;
	tt = 1;
	for(int i = 0;i<tt;++i){
		test_case();
	}
#ifndef ONLINE_JUDGE
 	cerr << "Running Time: " << 1.0 * clock() / CLOCKS_PER_SEC << " s.\n";
#endif
	return 0;
}


#include<bits/stdc++.h>
#define ll long long
#define ld long double
#define all(x) (x.begin()),(x.end())
#define allr(x) (x.rbegin()),(x.rend())
#define sz(x)  ((ll)x.size())
#define FAST_IO ios_base :: sync_with_stdio(false),cin.tie(nullptr),cout.tie(nullptr);
using namespace std;
#ifdef LOCAL
#include "uj.h"
#endif

int N,a,b;
void test_case(){
	cin >> N >> a >> b;
	++a;
	int prev_sum = 0,curr = 1;
	for(int i = 0;i<N;++i){
		if(a > 0){
			cout<< curr << ' ';
			prev_sum += curr++;
			--a;
		}
		else if(b > 0){
			cout << prev_sum + 1 << ' ';
			prev_sum += prev_sum + 1;
			--b;
		}
		else
			cout << 1 << ' ';
		if(prev_sum < curr) --b,++a;
		assert(prev_sum <= 50000);
		assert(curr <= 50000);
	}
	cout << endl;
	return;
}

int main(){
	FAST_IO;
	int tt;
	//cin >> tt;
	tt = 1;
	for(int i = 0;i<tt;++i){
		test_case();
	}
#ifndef ONLINE_JUDGE
 	cerr << "Running Time: " << 1.0 * clock() / CLOCKS_PER_SEC << " s.\n";
#endif
	return 0;
}


#include<bits/stdc++.h>
#define ll long long
#define ld long double
#define all(x) (x.begin()),(x.end())
#define allr(x) (x.rbegin()),(x.rend())
#define sz(x)  ((ll)x.size())
#define FAST_IO ios_base :: sync_with_stdio(false),cin.tie(nullptr),cout.tie(nullptr);
using namespace std;
#ifdef LOCAL
#include "uj.h"
#endif

int N,a,b;
void test_case(){
	cin >> N >> a >> b;
	++a;
	int prev_sum = 0,curr = 1;
	for(int i = 0;i<N;++i){
		if(a!=0){
			cout<< curr << ' ';
			prev_sum += curr++;
			--a;
		}
		else if(b!= 0){
			cout << prev_sum + 1 << ' ';
			prev_sum += prev_sum + 1;
			--b;
		}
		else
			cout << 1 << ' ';
		assert(prev_sum <= 50000);
		assert(curr <= 50000);
	}
	cout << endl;
	return;
}

int main(){
	FAST_IO;
	int tt;
	//cin >> tt;
	tt = 1;
	for(int i = 0;i<tt;++i){
		test_case();
	}
#ifndef ONLINE_JUDGE
 	cerr << "Running Time: " << 1.0 * clock() / CLOCKS_PER_SEC << " s.\n";
#endif
	return 0;
}


#include<bits/stdc++.h>
#define ll long long
#define ld long double
#define all(x) (x.begin()),(x.end())
#define allr(x) (x.rbegin()),(x.rend())
#define sz(x)  ((ll)x.size())
#define FAST_IO ios_base :: sync_with_stdio(false),cin.tie(nullptr),cout.tie(nullptr);
using namespace std;
#ifdef LOCAL
#include "uj.h"
#endif

int N,a,b;
void test_case(){
	cin >> N >> a >> b;
	++a;
	int prev_sum = 0,curr = 1;
	for(int i = 0;i<N;++i){
		if(a!=0){
			cout<< curr << ' ';
			prev_sum += curr++;
			--a;
		}
		else if(b!= 0){
			cout << prev_sum + 1 << ' ';
			prev_sum += prev_sum + 1;
			--b;
		}
		else
			cout << 1 << ' ';
		if(curr == 3) ++curr;
		assert(prev_sum <= 50000);
		assert(curr <= 50000);
	}
	cout << endl;
	return;
}

int main(){
	FAST_IO;
	int tt;
	//cin >> tt;
	tt = 1;
	for(int i = 0;i<tt;++i){
		test_case();
	}
#ifndef ONLINE_JUDGE
 	cerr << "Running Time: " << 1.0 * clock() / CLOCKS_PER_SEC << " s.\n";
#endif
	return 0;
}


#include<bits/stdc++.h>
#define ll long long
#define ld long double
#define all(x) (x.begin()),(x.end())
#define allr(x) (x.rbegin()),(x.rend())
#define sz(x)  ((ll)x.size())
#define FAST_IO ios_base :: sync_with_stdio(false),cin.tie(nullptr),cout.tie(nullptr);
using namespace std;
#ifdef LOCAL
#include "uj.h"
#endif

int N,a,b;
void test_case(){
	cin >> N >> a >> b;
	++a;
	int prev_sum = 0,curr = 1;
	for(int i = 0;i<N;++i){
		if(a > 0){
			cout<< curr << ' ';
			prev_sum += curr++;
			--a;
		}
		else if(b > 0){
			cout << prev_sum + 1 << ' ';
			prev_sum += prev_sum + 1;
			--b;
		}
		else
			cout << 1 << ' ';
		if(prev_sum < curr && b!= 0 && a!= 0) --b,++a;
		assert(prev_sum <= 50000);
		assert(curr <= 50000);
	}
	cout << endl;
	return;
}

int main(){
	FAST_IO;
	int tt;
	//cin >> tt;
	tt = 1;
	for(int i = 0;i<tt;++i){
		test_case();
	}
#ifndef ONLINE_JUDGE
 	cerr << "Running Time: " << 1.0 * clock() / CLOCKS_PER_SEC << " s.\n";
#endif
	return 0;
}


#include<bits/stdc++.h>
#define ll long long
#define ld long double
#define all(x) (x.begin()),(x.end())
#define allr(x) (x.rbegin()),(x.rend())
#define sz(x)  ((ll)x.size())
#define FAST_IO ios_base :: sync_with_stdio(false),cin.tie(nullptr),cout.tie(nullptr);
using namespace std;
#ifdef LOCAL
#include "uj.h"
#endif

int N,a,b;
void test_case(){
	cin >> N >> a >> b;
	if(N == 1) cout << 1 << endl;
	else if(a == N-1) cout << -1 << endl;
	else{
		vector<int> ans(N);
		if(b == 0) ans[0] = 2,ans[1] = 1;
		else ans[0] = 1,ans[1] = 2,--b;

		int curr = 3,prev_sum = 3;
		for(int i = 2;i<N;++i){
			if(a > 0){
				ans[i] = curr++;
				prev_sum += ans[i];
				--a;
			}
			else if(b > 0){
				ans[i] = prev_sum + 1;
				prev_sum += ans[i];
				--b;
			}
			else
				ans[i] = 1;
			assert(curr <= 50000 && prev_sum <= 50000);
		}
		if(prev_sum > 50000 || curr > 50000) cout << -1 ;
		else
			for(auto & el : ans)
				cout << el << ' ';
	}
	return;

}

int main(){
	FAST_IO;
	int tt;
	//cin >> tt;
	tt = 1;
	for(int i = 0;i<tt;++i){
		test_case();
	}
#ifndef ONLINE_JUDGE
 	cerr << "Running Time: " << 1.0 * clock() / CLOCKS_PER_SEC << " s.\n";
#endif
	return 0;
}


#include<bits/stdc++.h>
#define ll long long
#define ld long double
#define all(x) (x.begin()),(x.end())
#define allr(x) (x.rbegin()),(x.rend())
#define sz(x)  ((ll)x.size())
#define FAST_IO ios_base :: sync_with_stdio(false),cin.tie(nullptr),cout.tie(nullptr);
using namespace std;
#ifdef LOCAL
#include "uj.h"
#endif

int N,a,b;
void test_case(){
	cin >> N >> a >> b;
	if(N == 1) cout << 1 << endl;
	else if(a == N-1) cout << -1 << endl;
	else{
		vector<int> ans(N);
		if(b == 0) ans[0] = 2,ans[1] = 1;
		else ans[0] = 1,ans[1] = 2,--b;

		int prev_sum = 3;
		for(int i = 2;i<N;++i){
			if(b > 0){
				ans[i] = prev_sum + 1;
				prev_sum += ans[i];
				--b;
			}
			else if(a > 0){
				ans[i] = prev_sum++;
				--a;
			}
			else
				ans[i] = 1;
			if( prev_sum > 50000)
			{cout << -1;return;}
		}
			for(auto & el : ans)
				cout << el << ' ';
	}
	return;

}

int main(){
	FAST_IO;
	int tt;
	//cin >> tt;
	tt = 1;
	for(int i = 0;i<tt;++i){
		test_case();
	}
#ifndef ONLINE_JUDGE
 	cerr << "Running Time: " << 1.0 * clock() / CLOCKS_PER_SEC << " s.\n";
#endif
	return 0;
}


#include<bits/stdc++.h>
#define ll long long
#define ld long double
#define all(x) (x.begin()),(x.end())
#define allr(x) (x.rbegin()),(x.rend())
#define sz(x)  ((ll)x.size())
#define FAST_IO ios_base :: sync_with_stdio(false),cin.tie(nullptr),cout.tie(nullptr);
using namespace std;
#ifdef LOCAL
#include "uj.h"
#endif

int N,a,b;
void test_case(){
	cin >> N >> a >> b;
	if(N == 1) cout << 1 << endl;
	else if(a == N-1) cout << -1 << endl;
	else{
		vector<int> ans(N);
		if(b == 0) ans[0] = 2,ans[1] = 1;
		else ans[0] = 1,ans[1] = 2,--b;

		int curr = 3,prev_sum = 3;
		for(int i = 2;i<N;++i){
			if(a > 0){
				ans[i] = curr++;
				prev_sum += ans[i];
				--a;
			}
			else if(b > 0){
				ans[i] = prev_sum + 1;
				prev_sum += ans[i];
				--b;
			}
			else
				ans[i] = 1;
		}
		for(auto & el : ans)
			cout << el << ' ';
	}
	return;

}

int main(){
	FAST_IO;
	int tt;
	//cin >> tt;
	tt = 1;
	for(int i = 0;i<tt;++i){
		test_case();
	}
#ifndef ONLINE_JUDGE
 	cerr << "Running Time: " << 1.0 * clock() / CLOCKS_PER_SEC << " s.\n";
#endif
	return 0;
}


#include<bits/stdc++.h>
#define ll long long
#define ld long double
#define all(x) (x.begin()),(x.end())
#define allr(x) (x.rbegin()),(x.rend())
#define sz(x)  ((ll)x.size())
#define FAST_IO ios_base :: sync_with_stdio(false),cin.tie(nullptr),cout.tie(nullptr);
using namespace std;
#ifdef LOCAL
#include "uj.h"
#endif

int N,a,b;
void test_case(){
	cin >> N >> a >> b;
	if(N == 1) cout << 1 << endl;
	else if(a == N-1) cout << -1 << endl;
	else{
		vector<int> ans(N);
		if(b == 0) ans[0] = 2,ans[1] = 1;
		else ans[0] = 1,ans[1] = 2,--b;

		int prev_sum = 2;
		for(int i = 2;i<N;++i){
			if(b > 0){
				prev_sum += prev_sum;
				ans[i] = prev_sum ;
				--b;
			}
			else if(a > 0){
				ans[i] = ++prev_sum;
				--a;
			}
			else
				ans[i] = 1;
			if( prev_sum > 50000)
			{cout << -1;return;}
		}
			for(auto & el : ans)
				cout << el << ' ';
	}
	return;

}

int main(){
	FAST_IO;
	int tt;
	//cin >> tt;
	tt = 1;
	for(int i = 0;i<tt;++i){
		test_case();
	}
#ifndef ONLINE_JUDGE
 	cerr << "Running Time: " << 1.0 * clock() / CLOCKS_PER_SEC << " s.\n";
#endif
	return 0;
}


#include <bits/stdc++.h>
using namespace std;
#define ll long long
vector < ll > ans;
int main(){
    ll n , a , b , i;
    cin >> n >> a >> b;
    ll sum = 0;
    for(i = 2;i<=a + 2;i++){
        ans.push_back(i);
        sum+=i;
    }
    for(i = 1;i<=b;i++){
        ans.push_back( sum + 1 );
        sum+=(sum + 1);
        if (sum > 50000){
            cout << -1;
            return 0;
        }
    }
    for(i = 1;i<=n - b - a - 1;i++)
        ans.push_back(1);
    for(i = 0;i<n;i++)
        cout << ans[i] << " ";
}


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

int main(){
    ll n , a , b , i;
    cin >> n >> a >> b;
    cout << 100 << " ";
    for(i = 1;i<=a + 1;i++)
        cout << i << " ";
    for(i = 1;i<=b;i++)
        cout << 101 + i << " ";
    for(i = 1;i<=n - b - a - 2;i++)
        cout << 1 << " ";
        return 0;
}


#include <bits/stdc++.h>
using namespace std;
#define ll long long
vector < ll > ans;
int main(){
    ll n , a , b , i , last = 1;
    cin >> n >> a >> b;
    ll sum = 1;
    if (a > 1 && b == 0 && a + 1 != n){
        cout << -1;
        return 0;
    }
    if (a == 1&& b == 0){
        for(i = 1;i<=n - 1;i++)
            cout << 1 << " ";
        cout << 2;
        return 0;
    }
    ans.push_back(1);
    for(i = 1;i<=b;i++){
        ans.push_back( sum + 1 );
        last = sum + 1;
        sum+=(sum + 1);
        if (sum > 50000){
            cout << -1;
            return 0;
        }
    }
    for(i = 1;i<=a;i++){
       ans.push_back(last + i);
        if (last + i > 50000){
            cout << -1;
            return 0;
        }
    }
    for(i = 1;i<=n - b - a - 1;i++)
        ans.push_back(1);
    for(i = 0;i<n;i++)
        cout << ans[i] << " ";
}


#include <bits/stdc++.h>
using namespace std;
#define ll long long
vector < ll > ans;
int main(){
    ll n , a , b , i;
    cin >> n >> a >> b;
    ll sum = 0;
    for(i = 1;i<=a + 1;i++){
        ans.push_back(i);
        sum+=i;
    }
    for(i = 1;i<=b;i++){
        ans.push_back( sum + 1 );
        sum+=(sum + 1);
        if (sum > 50000){
            cout << -1;
            return 0;
        }
    }
    for(i = 1;i<=n - b - a - 1;i++)
        ans.push_back(1);
    for(i = 0;i<n;i++)
        cout << ans[i] << " ";
}


#include <bits/stdc++.h>
using namespace std;
#define ll long long
vector < ll > ans;
int main(){
    ll n , a , b , i , last = 1;
    cin >> n >> a >> b;
    ll sum = 1;
    if (n == 1){
        cout << 1;
        return 0;
    }
    if (n == a + 1){
        cout << -1;
        return 0;
    }
    if (a == 1 && b == 0){
        for(i = 1;i<=n - 1;i++)
            cout << 1 << " ";
        cout << 2;
        return 0;
    }
    if (b == 0){
        for(i = 1;i<=2;i++)
            cout << 1 << " ";
        for(i = 1;i<=a;i++)
            cout << i + 1 << " ";
        for(i = 1;i<=n - 2 - a;i++)
            cout << 1 << " ";
        return 0;
    }
    ans.push_back(1);
    for(i = 1;i<=b;i++){
        ans.push_back( sum + 1 );
        last = sum + 1;
        sum+=(sum + 1);
        if (sum > 50000){
            cout << -1;
            return 0;
        }
    }
    for(i = 1;i<=a;i++){
       ans.push_back(last + i);
        if (last + i > 50000){
            cout << -1;
            return 0;
        }
    }
    for(i = 1;i<=n - b - a - 1;i++)
        ans.push_back(1);
    for(i = 0;i<n;i++)
        cout << ans[i] << " ";
}


#include <bits/stdc++.h>
using namespace std;
#define ll long long
vector < ll > ans;
int main(){
    ll n , a , b , i , last = 1;
    cin >> n >> a >> b;
    ll sum = 1;
    ans.push_back(1);
    for(i = 1;i<=b;i++){
        ans.push_back( sum + 1 );
        last = sum + 1;
        sum+=(sum + 1);
        if (sum > 50000){
            cout << -1;
            return 0;
        }
    }
    for(i = 1;i<=a;i++){
       ans.push_back(last + i);
        if (last + i > 50000){
            cout << -1;
            return 0;
        }
    }
    for(i = 1;i<=n - b - a - 1;i++)
        ans.push_back(1);
    for(i = 0;i<n;i++)
        cout << ans[i] << " ";
}


#include <bits/stdc++.h>
using namespace std;
#define ll long long
vector < ll > ans;
int main(){
    ll n , a , b , i;
    cin >> n >> a >> b;
    ll sum = a + 2;
    ans.push_back(a + 2);
    for(i = 1;i<=a + 1;i++){
        ans.push_back(i);
        sum+=i;
    }
    for(i = 1;i<=b;i++){
        ans.push_back( sum + 1 );
        sum+=(sum + 1);
        if (sum > 50000){
            cout << -1;
            return 0;
        }
    }
    for(i = 1;i<=n - b - a - 2;i++)
        ans.push_back(1);
    for(i = 0;i<n;i++)
        cout << ans[i] << " ";
}


#include <bits/stdc++.h>
using namespace std;
#define ll long long
vector < ll > ans;
int main(){
    ll n , a , b , i , last = 1;
    cin >> n >> a >> b;
    ll sum = 1;
    if (a > 1 && b == 0){
        cout << -1;
        return 0;
    }
    ans.push_back(1);
    for(i = 1;i<=b;i++){
        ans.push_back( sum + 1 );
        last = sum + 1;
        sum+=(sum + 1);
        if (sum > 50000){
            cout << -1;
            return 0;
        }
    }
    for(i = 1;i<=a;i++){
       ans.push_back(last + i);
        if (last + i > 50000){
            cout << -1;
            return 0;
        }
    }
    for(i = 1;i<=n - b - a - 1;i++)
        ans.push_back(1);
    for(i = 0;i<n;i++)
        cout << ans[i] << " ";
}


#include <stdio.h>
#include<string.h>
#include<stdlib.h>
#include<math.h>
long long cmpfunc (const void * a, const void * b) {
   return ( *(long long*)a - *(long long*)b );
}

int main(void){

long long int test,i,j,n,count,flag=0,o1=0,o2=0,b1,x,m,l,max,sum2,min,f,c,r,o,sum1,sum=0,y,a,b,count1=0,a2,b2;

scanf("%lld",&n);
count=0;
for(i=0;i<n;i++){
    scanf("%lld%lld",&a,&b);
    if(a!=b){
        printf("rated");
        return 0;
    }else{
        if(a==b && a2>a && i!=0){
         count++;
        }
    }
   // printf("%lld\n",count);
    a2=a;
}

    printf("maybe");

return 0;
}


#include <stdio.h>

int main()
{
    int n, i;
    scanf("%d", &n);
    int str1[n], str2[n];
    for(i=0; i<n; i++)
        scanf("%d %d", &str1[i], &str2[i]);
    for(i=0; i<n; i++){
        if(str1[i] != str2[i]){
            printf("rated");
            return 0;
        }
    }
    for(i=0; i<n-1; i++){
        if(str1[i] < str1[i+1]){
            printf("unrated");
            return 0;
        }
    }
    printf("maybe");

    return 0;
}


#include<stdio.h>
#include<math.h>
#include<stdlib.h>

long long int compare(void *pa, void *pb)
{
    long long int *p1=pa;
    long long int *p2=pb;
    return *p2-*p1;
}

int main()
{
    long long int N,M,i,j,k,a,b,c,d,x,y,z,t,s,temp;
    long long int A[10000],B[10000],C[10000];

    scanf("%lld", &N);

    for(i=0; i<N; i++)
    {
        scanf("%lld %lld", &A[i],&B[i]);
        C[i]=A[i];
    }

    qsort(C,N,sizeof(long long int),compare);
    x=0;
    y=0;

    for(i=0; i<N; i++)
    {
        s=abs(A[i]-B[i]);
        if(s!=0)
        {
            x=1;
            break;
        }
    }

    for(i=0; i<N; i++)
    {
        if(A[i]!=C[i])
        {
            y=1;
            break;
        }
    }

    if(x==1)
    {
        printf("rated\n");
    }
    else if(y==1)
    {
        printf("unrated\n");
    }
    else if(y==0)
    {
        printf("maybe\n");
    }

    return 0;

}


#include <stdio.h>

int main (void){
    int a,arr[1001],brr[1001],i,j;

    scanf("%d",&a);

    for(i = 0; i < a; i++)
        scanf("%d%d",&arr[i],&brr[i]);

    for(i = 0; i < a; i++)
        if(arr[i]!=brr[i]){
            printf("rated");
            return 0;
        }
        for(i = 0; i < a-1; i++){
            for(j = i; j < a-1; j++)
                if(arr[i]< arr[j+1]){
                    printf("unrated");
                    return 0;
                }
        }

    printf("maybe");

return 0;
}


    #include<stdio.h>
    int a[1050];
    int b[1050];
    int main()
    {
        int n;
        int flag=0;
        scanf("%d",&n);
        for(int i=0;i<n;i++)
        {
            scanf("%d%d",&a[i],&b[i]);
            if(a[i]!=b[i])
            {
                printf("rated\n");
                flag=1;
                break;
            }
        }
        if(!flag)
        {
            for(int i=0;i<n-1;i++)
            {
                if(a[i]<a[i+1])
                {
                    printf("unrated\n");
                    flag=1;
                    break;
                }
            }
        }
        if(!flag)
            printf("maybe\n");
        return 0;
    }


#include<stdio.h>
int main(){
    int n,a[1000],b[1000];
    scanf("%d",&n);
    int i,j=0,k=0;
    for(i=0;i<n;i++) {
        scanf("%d%d",&a[i],&b[i]);
    }
    for(i=0;i<n;i++) {
        if(a[i]>b[i] || a[i]<b[i]) {
            j=1;
            break;
        }
    }
    for(i=1;i<n;i++) {
        if(a[i-1]>=a[i]) {
            continue;
        }
        else {
            k=1;
        }
    }

    if(j==1) {
        printf("rated\n");
    }
    else if(k==1) {
        printf("unrated\n");
    }
    else if(j==0) {
        printf("maybe\n");
    }
    return 0;
}


#include <stdio.h>

#define N 1000

int main() {
	static int aa[N], bb[N];
	int n, i, bad;

	scanf("%d", &n);
	for (i = 0; i < n; i++)
		scanf("%d%d", &aa[i], &bb[i]);
	for (i = 0; i < n; i++)
		if (aa[i] != bb[i]) {
			printf("rated\n");
			return 0;
		}
	bad = 0;
	for (i = 1; i < n; i++)
		if (aa[i - 1] < aa[i])
			bad = 1;
	printf(bad ? "unrated\n" : "maybe\n");
	return 0;
}


#include <stdio.h>

#define N 1000

int main() {
	static int aa[N], bb[N];
	int n, i, bad;

	scanf("%d", &n);
	for (i = 0; i < n; i++)
		scanf("%d%d", &aa[i], &bb[i]);
	for (i = 0; i < n; i++)
		if (aa[i] != bb[i]) {
			printf("rated\n");
			return 0;
		}
	bad = 0;
	for (i = 1; i < n; i++)
		if (aa[i - 1] < aa[i]) {
			bad = 1;
			break;
		}
	printf(bad ? "unrated\n" : "maybe\n");
	return 0;
}


#include<stdio.h>
int main()
{
				int n,a,b,k=0,l=0,a1,b1,i;
				scanf("%d%d%d",&n,&a1,&b1);
				if(a1!=b1)k=1;
				for(i=1;i<n;i++)
				{
								scanf("%d%d",&a,&b);
								if(a!=b)k=1;
								if(a>a1)l=1;
								a1=a;b1=b;
				}
				if(k)printf("rated");
				else{
								if(l)printf("unrated");
								else printf("maybe");
				}
				return 0;
}


#include<stdio.h>
int main()
{
				int n,a,b,k=0,l=0,a1,b1,i;
				scanf("%d%d%d",&n,&a1,&b1);
				for(i=1;i<n;i++)
				{
								scanf("%d%d",&a,&b);
								if(a!=b)k=1;
								if(a>a1)l=1;
								a1=a;b1=b;
				}
				if(k)printf("rated");
				else{
								if(l)printf("unrated");
								else printf("maybe");
				}
				return 0;
}


#include<stdio.h>
#include<stdlib.h>

int cmp(const void *a,const void* b)
{
	return(*(int*)a-*(int*)b);
}

int main()
{
	int n;
	scanf("%d",&n);
	int a[n],b[n];
	int i,flag=0;
	for(i=0;i<n;i++)
	{
		scanf("%d%d",&a[i],&b[i]);
/*		if(a[i]!=b[i])
		{
			printf("rated");return 0;
		}*/
		if(a[i]==b[i])
		{
			flag++;
		}
	}
	int count=0;
	if(flag==n)
	{
		qsort(a,n,sizeof(int),cmp);
		for(i=n-1;i>=0;i--)
		{
			if(a[i]!=b[n-i-1])
			{
				printf("unrated");return 0;
			}
			else
				count++;
		}
		if(count==n)
		printf("maybe");
	}
	else
	{
		printf("rated");
	}
	return 0;
}


//
// Created by user on 2/8/2018.
//
#define TRUE 1
#define FALSE 0
#include <stdio.h>
int main()
{
    int n,i;
    scanf("%d", &n);
    int ratings[n][2];
    int change = FALSE, sorted = TRUE;
    for(i=0;i<n;i++){
        scanf("%d %d", &ratings[i][0], &ratings[i][1]);
        if(ratings[i][0] != ratings[i][1]){
            change = TRUE;
        }
    }
    if(change == 1){
        printf("rated");
        return 0;
    }
    for(i=1;i<n;i++){
        if(ratings[i][0] > ratings[i-1][0]){
            sorted = FALSE;
            break;
        }
    }
    if(sorted == FALSE){
        printf("unrated");
    }
    else if(sorted == TRUE){
        printf("maybe");
    }
    return 0;
};


#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#include<ctype.h>
#include<string.h>

int comp(const void *i,const void *j)
{
    return *(int*)i-*(int*)j;
}

int main()
{
    int n,a[1000],b[1000],j,i,k,l,m=0;

    scanf("%d",&n);
    for(i=0;i<n;i++)
    {
        scanf("%d%d",&a[i],&b[i]);
        if(a[i]!=b[i]&&m==0)
        {
            printf("rated\n");
           /// return 0;
           m=1;
        }
        if(a[i]==b[i]&&i!=0&&a[i-1]==a[i]&&m==0)
        {
            printf("maybe\n");
            m=1;
          ///  return 0;
        }
        if(a[i]==b[i]&&i!=0&&a[i-1]<a[i]&&m==0)
        {
            printf("unrated\n");
            m=1;
          ///  return 0;
        }
    }

    ///qsort(array,100,sizeof(int),comp);
    return 0;
}


#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#include<ctype.h>
#include<string.h>

int comp(const void *i,const void *j)
{
    return *(int*)i-*(int*)j;
}

int main()
{
    int n,a[1000],b[1000],j,i,k,l,m=0,p=0,q=0;

    scanf("%d",&n);
    for(i=0;i<n;i++)
    {
        scanf("%d%d",&a[i],&b[i]);
        if(a[i]!=b[i]&&p==0)
        {
            p=1;
           /// return 0;
        }
        if(a[i]==b[i]&&i!=0&&a[i-1]==a[i]&&m==0)
        {
            m=1;
          ///  return 0;
        }
        if(a[i]==b[i]&&i!=0&&a[i-1]<a[i]&&q==0)
        {
            q=1;
          ///  return 0;
        }
    }
    if(p==1)
        printf("rated\n");
    else if(q==1)
        printf("unrated\n");
    else if(m==1)
        printf("maybe\n");
    else
        printf("maybe\n");

    ///qsort(array,100,sizeof(int),comp);
    return 0;
}


#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#include<ctype.h>
#include<string.h>

int comp(const void *i,const void *j)
{
    return *(int*)i-*(int*)j;
}

int main()
{
    int n,a[1000],b[1000],j,i,k,l,m=0,p=0,q=0;

    scanf("%d",&n);
    for(i=0;i<n;i++)
    {
        scanf("%d%d",&a[i],&b[i]);
        if(a[i]!=b[i]&&p==0)
        {
            printf("rated\n");
            p=1;
           /// return 0;
        }
        if(a[i]==b[i]&&i!=0&&a[i-1]==a[i]&&m==0)
        {
            m=1;
          ///  return 0;
        }
        if(a[i]==b[i]&&i!=0&&a[i-1]<a[i]&&q==0)
        {
            q=1;
          ///  return 0;
        }
    }
    if(p!=1&&q==1)
        printf("unrated\n");
    else if(p!=1&m==1)
        printf("maybe\n");

    ///qsort(array,100,sizeof(int),comp);
    return 0;
}


#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#include<ctype.h>
#include<string.h>

int comp(const void *i,const void *j)
{
    return *(int*)i-*(int*)j;
}

int main()
{
    int n,a[1000],b[1000],j,i,k,l,m=0,p=0,q=0;

    scanf("%d",&n);
    for(i=0;i<n;i++)
    {
        scanf("%d%d",&a[i],&b[i]);
        if(a[i]!=b[i]&&p==0)
        {
            p=1;
           /// return 0;
        }
        if(a[i]==b[i]&&i!=0&&a[i-1]==a[i]&&m==0)
        {
            m=1;
          ///  return 0;
        }
        if(a[i]==b[i]&&i!=0&&a[i-1]<a[i]&&q==0)
        {
            q=1;
          ///  return 0;
        }
    }
    if(p==1)
        printf("rated\n");
    else if(q==1)
        printf("unrated\n");
    else if(m==1)
        printf("maybe\n");

    ///qsort(array,100,sizeof(int),comp);
    return 0;
}


#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#include<ctype.h>
#include<string.h>

int comp(const void *i,const void *j)
{
    return *(int*)i-*(int*)j;
}

int main()
{
    int n,a[1000],b[1000],j,i,k,l,m=0,p=0,q=0;

    scanf("%d",&n);
    for(i=0;i<n;i++)
    {
        scanf("%d%d",&a[i],&b[i]);
        if(a[i]!=b[i]&&p==0)
        {
            p=1;
           /// return 0;
        }
        if(a[i]==b[i]&&i!=0&&a[i-1]==a[i]&&m==0)
        {
            m=1;
          ///  return 0;
        }
        if(a[i]==b[i]&&i!=0&&a[i-1]<a[i]&&q==0)
        {
            q=1;
          ///  return 0;
        }
    }
    if(p==1)
        printf("rated\n");
    else if(q==1)
        printf("unrated\n");
    else if(m==1)
        printf("maybe\n");
    else
        printf("unrated\n");

    ///qsort(array,100,sizeof(int),comp);
    return 0;
}


#include<stdio.h>
#include<stdlib.h>
struct pair
{
    int a;
    int b;
};
int main()
{
    int n,i,j;
    struct pair obj[10001];
    scanf("%d",&n);

    for(i=0 ; i<n ; i++)
    {
        scanf("%d %d",&obj[i].a,&obj[i].b);

    }
    for(i=0 ; i<n ; i++)
    {
        if(obj[i].a!=obj[i].b)
        {
            printf("rated");
            exit(0);

        }

    }
    for(i=0 ; i<n ; i++)
    {
        for(j=i+1 ; j<n ; j++)
        {
            if(obj[i].a<obj[j].a)
            {
                printf("unrated");
                exit(0);
            }

        }

    }
    printf("maybe");
}


#include<stdio.h>

char sorted (int *arr,int n);

int main ()
{
	int n;
	char rate=0;
	scanf("%d",&n);
	int arr [n];
	for(int i=0;i<n;i++)
	{
		int r1,r2;
		scanf("%d%d",&r1,&r2);
		if(r1!=r2)
			rate=1;

		arr[i]=r1;
	}
	if(rate)
	{
		printf("rated");
		return 0;
	}
	if(sorted(arr,n))
		printf("maybe");
	else
		printf("unrated");
}

char sorted (int *arr,int n)
{
	for (int i=0;i<n-1;i++)
		if(*(arr+i)<*(arr+i+1))
			return 0;
	return 1;
}


#include <stdio.h>

int main()
{
    int n, a, b, x=10e5, t=0;
    scanf("%d", &n);

    while(n--)
    {
        scanf("%d %d", &a, &b);
        if((a-b) != 0)
        {
            printf("rated\n");
            return 0;
        }
        if(a>x)
            t++;
        //printf("%d\n", t);
        x = a;
    }
    if(t)
        printf("unrated\n");
    else
        printf("maybe\n");

    return 0;
}


#include<stdio.h>

int main()
{
    int n, flag = 1, fla = 1;
    int a[1005], b[1005];
    scanf("%d", &n);

    scanf("%d %d", &a[0], &b[0]);
    if(a[0] - b[0] != 0) flag = 2;

    for(int i = 1; i < n; i++){
        scanf("%d %d", &a[i], &b[i]);

        if(flag == 1 && a[i] - b[i] != 0){
            flag = 2;
        }

        else if(fla == 1 && a[i] > a[i-1]) fla = 2;
    }

    if(flag == 2) printf("rated\n");
    else if(fla == 2) printf("unrated\n");
    else printf("maybe\n");

    return 0;
}


#include<stdio.h>
int main()
{
	int x,unrated=0;
	scanf("%d",&x);
	int a[x*2+1];
	for(int i=0;i<x*2;i++)
	{
		scanf("%d",&a[i]);
	}
	for(int i=0;i<x*2-1;i+=2)
	{
		if(a[i]!=a[i+1])
		{
			printf("rated");
			return 0;
		}
		if(i!=x*2-2)
		{
	    	if(a[i]<a[i+2])
	    	unrated=1;
		}
	}
	if(unrated==1)
	{
		printf("unrated");
		return 0;
	}
    	printf("maybe");
}


#include<stdio.h>
int main()
{
	int x,unrated=0;
	scanf("%d",&x);
	int a[x*2+1];
	for(int i=0;i<x*2;i++)
	{
		scanf("%d",&a[i]);
	}
	for(int i=0;i<x*2-1;i+=2)
	{
		if(a[i]!=a[i+1])
		{
			printf("rated");
			return 0;
		}
		if(i!=x*2-2)
		{
	    	if(a[i]<a[i+2])
	   	unrated=1;
		}
	}
	if(unrated==1)
	{
		printf("unrated");
		return 0;
	}
    	printf("maybe");
}


#include<stdio.h>

int main()
{
    int n,i=1,a[1001],b,z=0;
    a[0]=4500;
    scanf("%d",&n);
    while(i<=n)
    {
        scanf("%d%d",&a[i],&b);
        if(a[i]!=b)
        {
            printf("rated");
            z=1;
            break;
        }
        if(a[i]>a[i-1])
        {
            z=2;
        }
        i=i+1;
    }
    if(z==0)
    {
       printf("maybe");
    }
    else if(z==2)
    {
        printf("unrated");
    }

}


#include<stdio.h>

int main()
{
    int n,i=0,k,a[1000],b,z=0;
    scanf("%d",&n);
    while(i<n)
    {
        scanf("%d%d",&a[i],&b);
        if(a[i]!=b)
        {
            printf("rated");
            z=1;
            break;
        }
        i=i+1;
    }
    i=0;
    while(i<n && z!=1)
    {
        k=i+1;
        while(k<n)
        {
            if(a[i]==a[k])
            {
                printf("maybe");
                z=2;
                break;
            }
            k=k+1;
        }
        if(z==2)
        {
            break;
        }
        i=i+1;
    }
    if(z==0)
    {
        printf("unrated");
    }
}


#include<stdio.h>

int main()
{
    int n,i=1,a[1001],b,z=0;
    a[0]=4500;
    scanf("%d",&n);
    while(i<=n)
    {
        scanf("%d%d",&a[i],&b);
        if(a[i]!=b)
        {
            printf("rated");
            z=1;
            break;
        }
        if(a[i]>a[i-1])
        {
            printf("unrated");
            z=1;
            break;
        }
        i=i+1;
    }
    if(z==0)
    {
       printf("maybe");
    }

}


#include<stdio.h>

int main()
{
    int n,i=1,a[1001],b,z=0;
    scanf("%d",&n);
    while(i<=n)
    {
        scanf("%d%d",&a[i],&b);
        if(a[i]!=b)
        {
            printf("rated");
            z=1;
            break;
        }
        if(a[i]==a[i-1])
        {
            printf("maybe");
            z=1;
            break;
        }
        i=i+1;
    }
    if(z==0)
    {
        printf("unrated");
    }
}


#include<stdio.h>

int main()
{
    int n,i=1,a[1001],b,z=0;
    scanf("%d",&n);
    while(i<=n)
    {
        scanf("%d%d",&a[i],&b);
        if(a[i]!=b)
        {
            printf("rated");
            z=1;
            break;
        }
        if(a[i]>a[i-1])
        {
            printf("unrated");
            z=1;
            break;
        }
        i=i+1;
    }
    if(z==0)
    {
       printf("maybe");
    }

}


#include<stdio.h>
int main()
{
	int x,unrated=0;
	scanf("%d",&x);
	int a[x*2+1];
	for(int i=0;i<x*2;i++)
	{
		scanf("%d",&a[i]);
	}
	for(int i=0;i<x*2-1;i+=2)
	{
		if(a[i]!=a[i+1])
		{
			printf("rated");
			return 0;
		}
		if(i!=x*2-2a)
		{
		if(a[i]<a[i+2])
		unrated=1;
		}
	}
	if(unrated==1)
	{
		printf("unrated");
		return 0;
	}
	printf("maybe");
}


#include<stdio.h>
int main()
{
	int x,unrated=0;
	scanf("%d",&x);
	int a[x*2+1];
	for(int i=0;i<x*2;i++)
	{
		scanf("%d",&a[i]);
	}
	for(int i=0;i<x*2-1;i+=2)
	{
		if(a[i]!=a[i+1])
		{
			printf("rated");
			return 0;
		}
		if(i!=x*2-2)
		{
		if(a[i]<a[i+2])
		unrated=1;
		}
	}
	if(unrated==1)
	{
		printf("unrated");
		return 0;
	}
	printf("maybe");
}


#include <stdio.h>

int main(void) {
    int n;
    scanf("%d", &n);
    int unrated = 0;
    int recent;
    for (int i = 0; i < n; i++) {
        int r1, r2;
        scanf("%d%d", &r1, &r2);
        if (i > 0 && recent < r1) unrated = 1;
        recent = r1;
        if (r1 != r2) {
            printf("rated");
            return 0;
        }
    }
    if (unrated) printf("unrated");
    else printf("maybe");
    return 0;
}


#include <stdio.h>

int main(void) {
    int n;
    scanf("%d", &n);
    int unrated = 1;
    int ratings[n][2];
    int r1, r2;
    scanf("%d%d", &r1, &r2);
    ratings[0][0] = r1;
    ratings[0][1] = r2;
    for (int i = 1; i < n; i++) {
        for (int j = 0; j < i; j++) {
            if (ratings[j][0] == ratings[i][0]) unrated = 0;
        }
        int r1, r2;
        scanf("%d%d", &r1, &r2);
        if (r1 != r2) {
            printf("rated");
            return 0;
        }
    }
    if (unrated) printf("unrated");
    else printf("maybe");
    return 0;
}


#include<stdio.h>
int main()
{
    int n,p,q;
    scanf("%d", &n);
    int a[n][2];
    for(p=0; p<n; p++)
           {
            scanf("%d %d", &a[p][0], &a[p][1]);
           }

    for(p=0; p<n; p++)
           {
            if(a[p][0]!=a[p][1])
            {   printf("rated");
                goto label;
            }
           }

    for(p=0; p<n; p++)
            {   for(q=0; q<p; q++)
                    {   if(a[p][0]>a[q][0])
                        {   printf("unrated");
                            goto label;
                        }
                    }
            }

    for(p=1; p<n; p++)
            {   if(a[p][0]>a[p-1][0]) goto label;
                  else  {   printf("maybe");
                            goto label;
                        }
            }

        label: return 0;
}