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

#define  all(x)        (x).begin(),(x).end()
#define  pb            push_back
#define  lb            lower_bound
#define  ub            upper_bound
#define  fi            first
#define  se            second
#define  pii           pair<int,int>
#define  fastIO        ios_base::sync_with_stdio(false); cin.tie(NULL);
#define  mp            make_pair
#define endl '\n'
#define int long long

typedef double db;
typedef long long ll;

const int N = 2e5 + 5;
const int MOD = 1e9 + 7;
const int INF = 1e9;

int ncr(int n, int r) {
	r = min(r, n - r);
	int ans = 1;

	for (int i = 1; i <= r; i++) {
		ans *= (n - r + i);
		ans /= i;
	}
	return ans;
}

void solve() {

	int a, b, k; cin >> a >> b >> k;

	int n = (a + b);
	string ans = "";
	--k;

	while (a && b) {

		//number of remaining string if we put 'a' here
		int rem = ncr(a + b - 1, b);

		if (k >= rem) {
			k -= rem;
			ans += "b";
			--b;
		}
		else {
			ans += "a";
			--a;
		}
	}

	ans += string(a, 'a') + string(b, 'b');
	cout << ans;
}

signed main() {

#ifndef ONLINE_JUDGE
	freopen("input.txt", "r", stdin);
	freopen("output.txt", "w", stdout);
#endif

	fastIO

	int t = 1;
	// cin >> t;

	for (int tt = 1; tt <= t; tt++) {
		solve();
	}
}
#include <bits/stdc++.h>
using namespace std;
#define rep(i,n) for(int i=0;i<n;i++)
typedef long long ll;

ll c[32][32];

signed main(){
  rep(i,31){
    c[0][i]=1;
  }
  rep(i,31){
    c[i][0]=1;
  }
  rep(i,31) rep(j,31){
    if(i==0||j==0) continue;
    c[i][j]=c[i-1][j]+c[i][j-1];
  }
  ll a,b,k;
  cin>>a>>b>>k;
  
  ll len=a+b;
  rep(i,len){
    //cout<<a<<" "<<b<<" "<<k<<endl;    
    if(b==0){
      cout<<"a";
      continue;
    }
    if(a==0){
      cout<<"b";
      continue;
    }   
    if(k>c[a-1][b]){
      cout<<"b";
      k-=c[a-1][b];
      b--;

    }
    else{
      cout<<"a"; 
      a--;
    }
  }
  cout<<endl;
  return 0;
}
