#include <bits/stdc++.h>
using namespace std;
typedef long long int ll;
typedef pair<ll,ll> P;
typedef vector<ll> VI;
typedef vector<VI> VVI;
#define REP(i,n) for(ll i=0;i<(n);i++)
#define ALL(v) v.begin(),v.end()
constexpr ll MOD=1000000007;
constexpr ll INF=2e18;

int main(){
    ll a, b, k; cin >> a >> b >> k;
    ll comb[61][61];
    comb[0][0]=1;
    for(int i=1;i<=60;i++){
        REP(j,i+1){
            if(j==0)
                comb[i][j]=comb[i-1][j];
            else
                comb[i][j]=comb[i-1][j-1]+comb[i-1][j];
        }
    }
    string ans="";
    int n=a+b;
    REP(i,n){
        if(a==0||b==0){
            if(a==0)
                ans+='b';
            else
                ans+='a';
        }
        else{
            ll c=comb[a+b-1][a-1];
            if(k-c<=0){
                ans+='a';
                a--;
            }
            else{
                k-=c;
                ans+='b';
                b--;
            }
        }
    }
    cout << ans << endl;
    return 0;
}
#include<bits/stdc++.h>
using namespace std;
#define mod 1000000007
#define pi acos(-1)
#define int long long
#define fastttt std::ios::sync_with_stdio(false);std::cin.tie(NULL);std::cout.tie(NULL);
#define endl "\n"
long long pow2(long long a,long long b,long long m){
    long long ans=1;
    while(b>0){
        if(b&1){ans=(ans*a)%m;}
                a=(a*a)%m;
                b>>=1;
        }
    return ans;
}
long long pow2(long long a,long long b){
    long long ans=1;
    while(b>0){
        if(b&1){ans=(ans*a);}
                a=(a*a);
                b>>=1;
        }
    return ans;
}
int ncr(int n, int r)
{
    long long p = 1, k = 1;
    if (n - r < r)
        r = n - r;
    if (r != 0) {
        while (r) {
            p *= n;
            k *= r;
            long long m = __gcd(p, k);
            p /= m;
            k /= m;
 
            n--;
            r--;
        }
    }
    else
        p = 1;
    return p;
}
string call(int a,int b,int k,int i,int cur){
    if(i == 0)return "";
    if(a == 0){
        string ret(i,'b');
        return ret;
    }
    if(b == 0){
        string ret(i,'a');
        return ret;
    }
    int up = ncr(a+b-1,b);
    if(up+cur-1 < k){
        return "b"+call(a,b-1,k,i-1,cur+up);
    }
    else{
        if(a)
        return "a"+call(a-1,b,k,i-1,cur);
        else return "b"+call(a,b-1,k,i-1,cur);
    }
}
void solve(){
    int a,b,k;
    cin>>a>>b>>k;
    cout<<call(a,b,k,a+b,1);
}
int32_t main()
{
    fastttt
    int t = 1;
    // cin>>t;
    while(t--)
    {
        solve();
    }
    return 0;
}