#include <bits/stdc++.h>
using namespace std;
using ll = long long;
#define ff first
#define ss second
#define INF 1000000000000000000
#define pb push_back
#define vl vector<ll>
#define vi vector<int>
#define sz(a) (ll)a.size()
#define all(v) v.begin(), v.end()
mt19937 rng(chrono::steady_clock::now().time_since_epoch().count());

int getRand(int l, int r)
{
    uniform_int_distribution<int> uid(l, r);
    return uid(rng);
}
ll power(ll b, ll e, ll m) {
    if (e == 0) return 1;
    if (e & 1) return b * power(b * b % m, e / 2, m) % m;
    return power(b * b % m, e / 2, m);
}
ll power( ll b, ll e)
{
    if (e == 0) return 1;
    if (e & 1) return b * power(b * b, e / 2);
    return power(b * b, e / 2);
}
ll modI(ll a, ll m)
{
    ll m0 = m, y = 0, x = 1;
    if (m == 1)return 0;
    while (a > 1) {
        ll q = a / m;
        ll t = m; m = a % m;
        a = t; t = y;
        y = x - q * y; x = t;
    }
    if (x < 0) {x += m0;}
    return x;
}
const int N = 2e5 + 5;
ll a, b;
ll ncr[61][31];
ll nCr(ll n, ll r) {
    if (r > n or r < 0) {return 0;}

    if (n == r || r == 0) {return 1;}
    if (r == 1 || r == n - 1) {return n;}
    if (ncr[n][r] != -1) {return ncr[n][r];}
    ncr[n][r] = nCr(n - 1, r) + nCr(n - 1, r - 1);
    return ncr[n][r];
}

// if our approach is correct p = ans and k =1
ll f(ll k) {
    // find the number of numbers less than k with a 0s and b 1s

    string curr = "";
    int num_zeroes = 0;
    for (int i = 0; i < a + b; i++) {
        if (k & (1LL << i)) {
            curr += '1';
        }
        else {
            curr += '0';
            num_zeroes++;
        }
    }
    reverse(all(curr));
    ll zeroes_used = 0;
    ll ans = 0;
    if (num_zeroes == a) {
        ans++;
    }
    // ll num_ones = 0;
    for (ll i = 0; i < a + b; i++) {
        if (zeroes_used > a) {break;}
        if (curr[i] == '1') {
            // use zero here
            if (a < zeroes_used + 1) {break;}
            ans += nCr(a + b - i - 1, a - zeroes_used - 1);
        }
        else {zeroes_used++;}
    }
    return ans;
}
void print(ll x) {
    for (int i = 59; i >= 0; i--) {
        if (x & (1LL << i)) {
            cout << 1;
        }
        else {cout << 0;}
    }
    cout << "\n";
    return;
}
void solve() {
    memset(ncr, -1, sizeof(ncr));
    ll k;
    cin >> a >> b >> k;
    ll l = 0, r = (1LL << 60);
    // print(r - 1);
    // for (int i = 0; i < b; i++) {
    //     r |= (1LL << (a + i));
    // }
    // r++;
    ll ans = -1;
    while (l <= r) {
        ll mid = (l + r) >> 1;
        ll g = f(mid);
        // cout << mid << " " << g << "\n";
        if (g >= k) {
            ans = mid;
            r = mid - 1;
        }
        else {
            l = mid + 1;
        }
    }
    // cout << ans << "\n";
    string out = "";
    for (int i = 0; i < a + b; i++) {
        if (ans & (1LL << i)) {
            out += 'b';
        }
        else {
            out += 'a';
        }
    }
    reverse(all(out));
    cout << out;
}

int main() {
    ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);

    // freopen("test_input.txt", "r", stdin);
    // freopen("test_output.txt", "w", stdout);
    int t = 1;
    // cin >> t ;
    // cout << t % 3 << "\n";
    // return 0;
    for (int ntc = 1; ntc <= t; ntc++) {
        // cout << "Case #" << ntc << ": ";
        solve();
    }
}
#include<bits/stdc++.h>
#define ll long long
#define re register
#define INF 2147483647
using namespace std;

inline ll read()
{
	ll f=1,x=0;char s=getchar();
	while(s<'0'||s>'9')
	{
		if(s=='-') f=-1;
		s=getchar();
	}
	while(s>='0'&&s<='9')
	{
		x=x*10+s-48;
		s=getchar();
	}
	return f*x;
}

ll C[100][100];
 
int main()
{
	int a=read(),b=read();
	int n=a+b;
	ll k=read();
	for(int i=0;i<=n;i++) C[i][i]=C[i][0]=1;
	for(int i=1;i<=n;i++)
		for(int j=i+1;j<=n;j++)
			C[j][i]=C[j-1][i-1]+C[j-1][i];
	for(int i=1;i<=n;i++)
	{
//		cout<<a<<" "<<b<<" "<<k<<endl;
		if(a==0)
		{
			for(int j=1;j<=b;j++) putchar('b');
			break;
		}
		if(b==0)
		{
			for(int j=1;j<=a;j++) putchar('a');
			break;
		}
		ll res=C[a+b-1][a-1];
//		cout<<res<<endl;
		if(k>res) 
		{
			putchar('b');
			k-=res;
			b--;
		}
		else
		{
			putchar('a');
			a--;
		}
	}
	return 0;
}