#include <bits/stdc++.h>

using namespace std;
using ll = long long;
#define rep(i, n) for(int i=0, i##_len=(n); i<i##_len; ++i)
#define all(x) (x).begin(),(x).end()

ll comb_count(ll n, ll r) {
    if (r > n) return 0;
    if (r * 2 > n) r = n - r;
    if (r == 0) return 1;

    ll result = n;
    for (ll i = 2; i <= r; ++i) {
        result *= (n - i + 1);
        result /= i;
    }
    return result;
}

void solve(long long A, long long B, long long K) {
    K--;
    string ans;
    rep(i, A + B) {
        if (0 < A) {
            if (K < comb_count(A + B - 1, B)) {
                ans += "a";
                A--;
            } else {
                ans += "b";
                K -= comb_count(A + B - 1, B);
                B--;
            }
        } else {
            ans += "b";
            B--;
        }
    }
    cout << ans << endl;
}

int main() {
    long long A;
    std::scanf("%lld", &A);
    long long B;
    std::scanf("%lld", &B);
    long long K;
    std::scanf("%lld", &K);
    solve(A, B, K);
    return 0;
}

#include <iostream>
#include <math.h>
#include <iomanip> 
#include <vector>
#include <unordered_map> 
#include <algorithm>
#include <string> 
#include <set>
#include <numeric>
#include <queue>
#include <map>

using namespace std;
 








int main(){
    
    int n,k,m;
    int total = 0;
    cin >> n >> k >> m;
    for(int i = 0;i<n-1;i++){
        int x;
        cin >> x;
        total += x;
    }
    for(int i = 0;i<=k;i++){
        //cout << ((double)total+i)/n<< endl;
        if(((double)total+i)/n >=m){
            cout << i;
            return 0;
        }
    }
    cout << -1;
    
}