#include <bits/stdc++.h>
#define rep(i,n) for(int i = 0; i < (int)(n); i++)
#define rrep(ri,n) for(int ri = (int)(n-1); ri >= 0; ri--)
#define rep2(i,x,n) for(int i = (int)(x); i < (int)(n); i++)
#define rrep2(ri,x,n) for(int ri = (int)(n-1); ri >= (int)(x); ri--)
#define repit(itr,x) for(auto itr = x.begin(); itr != x.end(); itr++)
#define rrepit(ritr,x) for(auto ritr = x.rbegin(); ritr != x.rend(); ritr++)
#define ALL(x) x.begin(), x.end()
using ll = long long;
using namespace std;

ll calcNumOfCombination(ll n, ll r){
  ll num = 1;
  for(ll i = 1; i <= r; i++){
    num = num * (n - i + 1) / i;
  }
  return num;
}

int main() {
  int a, b;
  ll k;
  cin >> a >> b >> k;
  k--;
  string ans;
  ll now = 0;
  int ua = 0, ub = 0;
  rep(i, a+b) {
    if(ub == b) {
      ans.push_back('a');
      continue;
    } else if(ua == a) {
      ans.push_back('b');
      continue;
    }
    int z = a+b - (i+1);
    ll p = calcNumOfCombination(z, a-ua-1);
    // cerr << i << " " << p << " " << now << endl;
    if(now+p <= k) {
      now += p;
      ans.push_back('b');
      ub++;
    } else {
      ans.push_back('a');
      ua++;
    }
  }
  cout << ans << endl;
  return 0;
}
#include <bits/stdc++.h>
using namespace std;

long long int mem[40][40];

void comb(vector<vector<long long int> > &v) {
    for (int i = 0; i < v.size(); i++) {
        v[i][0] = 1;
        v[i][i] = 1;
    }
    for (int k = 1; k < v.size(); k++) {
        for (int j = 1; j < k; j++) {
            v[k][j] = (v[k - 1][j - 1] + v[k - 1][j]);
        }
    }
}

int main() {
    memset(mem, -1, sizeof(mem));
    vector<vector<long long int> > v(63, vector<long long int>(63, 0));
    comb(v);
    long long int a, b, k;
    cin >> a >> b >> k;
    int l = a + b;
    for (int i = 0; i < l; i++) {
        long long int c = v[a + b - 1][b];
        if (c >= k) {
            cout << 'a';
            a--;
        } else {
            k -= c;
            cout << 'b';
            b--;
        }
    }
    cout << endl;
}