#include<bits/stdc++.h>
#define int ll
#define sz(x) int((x).size())
#define all(x) (x).begin(),(x).end()
#define x first
#define y second
using namespace std;
using ll = long long;
using pi = pair<int,int>;
const int inf = 0x3f3f3f3f3f3f3f3f;
const int minf = 0xc0c0c0c0c0c0c0c0;

int comb[65][65];

signed main() {
    ios::sync_with_stdio(0); cin.tie(0);

    comb[0][0] = 1;
    for (int i=1; i<=60; i++) {
        comb[i][0] = 1;
        for (int j=1; j<=i; j++) {
            comb[i][j] = comb[i-1][j] + comb[i-1][j-1];
        }
    }

    int a,b,k; cin>>a>>b>>k;
    string res;
    while (a || b) {
        if (a == 0) {
            res.push_back('b');
            --b;
        }
        else if (b == 0) {
            res.push_back('a');
            --a;
        }
        else {
            if (comb[a+b-1][b] < k) {
                res.push_back('b');
                k -= comb[a+b-1][b];
                --b;
            }
            else {
                res.push_back('a');
                --a;
            }
        }
    }

    cout<<res<<'\n';

    return 0;
}
#include <bits/stdc++.h>

#define Fast cin.tie(0), ios::sync_with_stdio(0)
#define All(x) x.begin(), x.end()
#define louisfghbvc int t; cin >> t; for(int tt = 0; tt < t; ++tt)
#define sz(x) (int)(x).size()
#define sort_unique(x) sort(x.begin(), x.end()); x.erase(unique(x.begin(), x.end()));
using namespace std;
typedef long long LL;
typedef pair<LL, LL> ii;
typedef vector<LL> vi;

template<typename T> istream& operator>>(istream &is, vector<T> &v) { for(auto &it : v) is >> it; return is; }
template<typename T> ostream& operator<<(ostream &os, const vector<T> &v) { os << '{'; string sep = ""; for(const auto &x : v) os << sep << x, sep = ", "; return os << '}'; }
template<typename A, typename B> ostream& operator<<(ostream &os, const pair<A, B> &p) { return os << '(' << p.first << ", " << p.second << ')'; }

void dbg_out() { cerr << " end.\n"; }
template<typename Head, typename... Tail> void dbg_out(Head H, Tail... T) { cerr << ' ' << H; dbg_out(T...); }

const int N = 2e5 + 5;
const int INF = 0x3f3f3f3f;
const int mod = 1e9+7;
/**
Read problem statement carefully
**/

LL dp[35][35]; // numbers of ways.

string find_kth(int a, int b, LL k){
    if(a == 0)
        return string(b, 'b');
    if(b == 0)
        return string(a, 'a');
    if(k <= dp[a-1][b]) // put a
        return string("a") + find_kth(a-1, b, k);
    else
        return string("b") + find_kth(a, b-1, k - dp[a-1][b]);
}

void solve(int n){
    int a, b;
    LL k;
    cin >> a >> b >> k;
    
    dp[0][0] = 1;
    for(int i = 0; i <= a; ++i){
        for(int j = 0; j <= b; ++j){
            if(i) dp[i][j] += dp[i-1][j];
            if(j) dp[i][j] += dp[i][j-1];
        }
    }
    
    cout << find_kth(a, b, k) << "\n";
}

int main()
{
    Fast;
    // freopen("in.txt", "r", stdin);
    // freopen("out.txt", "w", stdout);
    // louisfghbvc
        solve(1);
    return 0;
}

/**
Enjoy the problem.
**/
