#include <bits/stdc++.h>
using namespace std;
using ll = long long int;
using ull = unsigned long long int;

template <class T>
inline bool chmin(T &a, T b) {
    if (a > b) {
        a = b;
        return true;
    }
    return false;
}

template <class T>
inline bool chmax(T &a, T b) {
    if (a < b) {
        a = b;
        return true;
    }
    return false;
}

constexpr int MAX = 30;
ll dp[MAX + 1][MAX + 1];

string find(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]) {
        return string("a") + find(A - 1, B, K);
    } else {
        return string("b") + find(A, B - 1, K - dp[A - 1][B]);
    }
}

int main() {
    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 > 0) dp[i][j] += dp[i - 1][j];
            if (j > 0) dp[i][j] += dp[i][j - 1];
        }
    }

    cout << find(A, B, K) << endl;
}

/**
*    author: Dooloper
*    created: 22.05.2021 20:55:00
**/

#include <bits/stdc++.h>
using namespace std;
#define rep(i, n) for(int i = 0; i < (int)(n); i++)
#define repp(i,k, n) for(int i = (int)(k); i < (int)(n); i++)
#define ALL(a)  (a).begin(),(a).end()
using ll = long long;
using P = pair<int, int>;
struct Edge{int to; ll w; Edge(int to, ll w) : to(to), w(w) {}};
using Graph = vector<vector<Edge>>;
const int di[] = {-1,0,1,0};
const int dj[] = {0,-1,0,1};

ll comb(int a, int b){
    ll ans = 1;
    ll key = a + b;
    rep(i,a){
        ans *= key;
        ans /= (i+1);
        key--;
    }
    return ans;
}


int main(){
    ll a,b,k; cin >> a >> b >> k;
    string ans;
    int n = a+b;
    rep(i,n){
        if(comb(a-1,b) < k){
            ans.push_back('b');
            k -= comb(a-1,b);
            b--;
            if(b == 0){
                rep(j,a) ans.push_back('a');
                break;
            }
        }
        else{
            ans.push_back('a');
            //k -= comb(a-1,b);
            a--;
            if(a == 0){
                rep(j,b) ans.push_back('b');
                break;
            }
        }
    }
    cout << ans << endl;
    //cout << comb(30,30) << endl;
}