#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
template<class T>bool chmax(T &a, const T &b) { if (a<b) { a=b; return true; } return false; }
template<class T>bool chmin(T &a, const T &b) { if (b<a) { a=b; return true; } return false; }
#define all(x) (x).begin(),(x).end()
#define fi first
#define se second
#define mp make_pair
#define si(x) int(x.size())
const int mod=1000000007,MAX=65,INF=1<<30;
ll comb[MAX][MAX];

int main(){
    
    std::ifstream in("text.txt");
    std::cin.rdbuf(in.rdbuf());
    cin.tie(0);
    ios::sync_with_stdio(false);
    
    comb[0][0]=1;
    for(int i=0;i<60;i++){
        for(int j=0;j<=i;j++){
            comb[i+1][j]+=comb[i][j];
            comb[i+1][j+1]+=comb[i][j];
        }
    }
    
    int A,B;cin>>A>>B;
    ll K;cin>>K;
    
    string ans;
    while(A||B){
        if(A){
            ll p=comb[A-1+B][B];
            if(p>=K){
                ans+='a';
                A--;
                continue;
            }
            
            K-=p;
        }
        ans+='b';
        B--;
    }
    
    cout<<ans<<endl;
}

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

// template {{{  0
// using {{{ 1
using ll = long long int;
using pii = pair<int,int>;
using pll = pair<ll,ll>;
using vi = vector<int>;
using vl = vector<ll>;
using vii = vector<pii>;
using vll = vector<pll>;
// }}} 1
// definition {{{ 1
// scaning {{{ 2
#define Scd(x) scanf("%d", &x)
#define Scd2(x,y) scanf("%d%d", &x, &y)
#define Scd3(x,y,z) scanf("%d%d%d", &x, &y, &z)
#define Scll(x) scanf("%lld", &x)
#define Scll2(x,y) scanf("%lld%lld", &x, &y)
#define Scll3(x,y,z) scanf("%lld%lld%lld", &x, &y, &z)
#define Scc(c) scanf("%c", &c);
#define Scs(s) scanf("%s", s);
#define Scstr(s) scanf("%s", &s);
// }}} 2
// constants {{{ 2
#define EPS (1e-7)
#define INF (2e9)
#define PI (acos(-1))
// }}} 2
// systems {{{ 2
#define Repe(x,y,z) for(ll x = z; x < y; x++)
#define Rep(x,y) Repe(x,y,0)
#define RRepe(x,y,z) for(ll x = y-z-1; x >= 0; x--)
#define RRep(x,y) RRepe(x,y,0)
// }}} 2
// output {{{ 2
#define YesNo(a) (a)?printf("Yes\n"):printf("No\n")
#define YESNO(a) (a)?printf("YES\n"):printf("NO\n")
// }}} 2
// }}} 1
// input {{{ 1
// }}} 1
// }}} 0

int main() {

    ll A,B,K;
    Scll3(A,B,K);

    ll comb[61][61] = {};
    comb[0][0] = 1;

    Rep(i,60) Rep(j,60) {
        comb[i+1][j] += comb[i][j];
        comb[i+1][j+1] += comb[i][j];
    }

    deque<int> ans;
    Rep(ni,B) {
        ll tmp = 0;
        int ti = 0;
        Rep(ai,A+1) {
            int r = B - ni;
            int n = ai + r - 1;
            if (comb[n][r] >= K) {
                break;
            } else {
                tmp = comb[n][r];
                ti = ai;
            }
        }
        K -= tmp;
        ans.push_back(A-ti);
    }

    Rep(i,A+1) {
        while ( !ans.empty() && ans.front() == i ) {
            printf("b");
            ans.pop_front();
        }
        printf ("%c", i!=A?'a':'\n');
    }


    return 0;
}

