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

typedef long long ll;

int64_t comb(int x, int y) {
    int64_t res(1);
    for (int i = 1; i <= x; ++i) {
        res *= (x + y + 1 - i);
        res /= i;
    }
    return res;
}

string solve(int64_t A, int64_t B, int64_t K) {
    string res;
    while (A + B > 0) {
        if (K == 0) {
            for (int i = 0; i < A; ++i) {
                res.push_back('a');
            }
            for (int i = 0; i < B; ++i) {
                res.push_back('b');
            }
            break;
        }
        auto v = comb(A-1, B);
//        cerr << K << ", " << v << endl;
        if (K >= v) {
            res.push_back('b');
            K -= v;
            B -= 1;
        } else {
            res.push_back('a');
            A -= 1;
        }
    }
    return res;
}

// generated by oj-template v4.7.2 (https://github.com/online-judge-tools/template-generator)
int main() {
    std::ios::sync_with_stdio(false);
    std::cin.tie(nullptr);
    constexpr char endl = '\n';
    int64_t A, B, K;
    cin >> A >> B >> K;
    K--;
    auto ans = solve(A, B, K);
    cout << ans << endl;
    return 0;
}


                        //    I solemnly swear that I am upto no good //

#include <bits/stdc++.h>
using namespace std;
#define sub             freopen("input.txt", "r", stdin);//freopen("output.txt", "w", stdout);
#define ll              long long
#define ld              long double
#define ttime           cerr << '\n'<<"Time (in s): " << double(clock() - clk) * 1.0 / CLOCKS_PER_SEC << '\n';
#define pb              push_back
#define unq(a)          sort(all(a));(a).resize(unique(all(a)) - (a).begin())
#define sz(x)           (int)((x).size())
#define input(arr,n)    for(ll i1=0;i1<n;i1++ )cin>>arr[i1]
#define fast            ios_base::sync_with_stdio(false);cin.tie(0);
#define all(x)          (x).begin(),(x).end()
#define rep(i,a,b)      for(ll i=a;i<b;i++)
#define PR(x)           cout << #x " = " << (x) << "\n"
#define mp              make_pair
#define ff              first
#define ss              second
#define YY              cout<<"Yes"<<endl
#define NN              cout<<"No"<<endl
#define ppc             __builtin_popcount
#define ppcll           __builtin_popcountll

const long long INF=1e18;
const long long A=200005;
const long long mod=1000000007;

#define endl "\n"
// #define int ll

typedef pair<ll,ll> pairll;
typedef map<ll,ll>  mapll;
typedef map<char,ll> mapch;
bool comp(ll a,ll b){
    return a>b;
}

// Function to find the nCr
ll ncr(int n, int r)
{

    // p holds the value of n*(n-1)*(n-2)...,
    // k holds the value of r*(r-1)...
    long long p = 1, k = 1;

    // C(n, r) == C(n, n-r),
    // choosing the smaller value
    if (n - r < r)
        r = n - r;

    if (r != 0) {
        while (r) {
            p *= n;
            k *= r;

            // gcd of p, k
            long long m = __gcd(p, k);

            // dividing by gcd, to simplify
            // product division by their gcd
            // saves from the overflow
            p /= m;
            k /= m;

            n--;
            r--;
        }

        // k should be simplified to 1
        // as C(n, r) is a natural number
        // (denominator should be 1 ) .
    }

    else
        p = 1;

    // if our approach is correct p = ans and k =1
    return p;
}


ll n,k,tt=1;
void solve(){
    //string s,t;
    // ll m,q,x,y,ans=0;
    ll a,b,ans=0;
    cin>>a>>b>>k;
    string s;
    ll sz=a+b;

    // PR(k);

    while(sz && a && b){
        // PR(k);
        ll p=ncr(sz-1, a-1);
        if(p>=k){
            s.pb('a');
            a--;
        }
        else{
            k-=p;
            s.pb('b');
            b--;
        }
        sz--;
    }

    // cout<<a<<endl<<b<<endl;

    while(a){
        s.pb('a');a--;
    }
    while(b){
        s.pb('b');b--;
    }

    cout<<s<<endl;
    

}

signed main(){ 
    // sub;    
    fast;
    // cout<<"DDDDD";
    // pre();
    // clock_t clk = clock();
    ll t=1;
    // cin>>t;
    while(t--){
        solve();
    }
    // ttime;
    return 0;
}        

                                // Mischief Managed //   
                                         