#include<bits/stdc++.h>
using namespace std;
int main() {
	long long a, b, k;
	cin >> a >> b >> k;
    long long a1=a,b1=b;
	long long m = 1ll;
	for (long long i = 1ll; i <= b; i++) {
		m *= a + i;
		m /= i;
	}
    long long l = 1ll, u = m;
	for (long long i = 0; i < (a1 + b1); i++) {
        if(a+b==0) continue;
		if (u - m * b / (a + b) >= k) {
			cout << 'a';
            u -= m*b/(a+b);
			m *= a;
			m /= (a + b);
			a--; 
		}
		else {
			cout << 'b';
            l += m*a/(a+b);
			m *= b;
			m /= (a + b);
			b--;            
		}
	}      
	cout << endl;
}
#include <bits/stdc++.h>
using namespace std;
//#pragma GCC optimize "trapv"
#define ll long long

int const siz = 60;
ll nCr[siz+1][siz+1];

void precomputation() {
    nCr[1][0] = nCr[1][1] = nCr[0][0] = 1;
    for (int i=2;i<=siz;i++) {
        nCr[i][0] = 1;
        for (int j=1;j<=i;j++)
            nCr[i][j] = nCr[i-1][j] + nCr[i-1][j-1];
    }
}

void solve() {
    int a,b; ll k; cin>>a>>b>>k;
    int n = a+b;
    for (int i=n;i>=1;i--) {
        ll cnt = nCr[i-1][b];
        //cout<<cnt<<" "<<k<<endl;
        if (cnt >= k) {
            cout<<"a";
        }
        else {
            cout<<"b";
            b--;
            k -= cnt;
        }
    }

}

int main() {
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    precomputation();
    solve();
    return 0;
}