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

long long ncr(long long a,long long b)
{
    long long m=1;
    for(int i=a;i>b;i--)
    {
        m*=i;
        m/=a-i+1;
    }
    return m;
}
int main()
{
    ios::sync_with_stdio(false);
    cin.tie(0);
    long long a = 0, b = 0, c = 0, d = 0, e = 0, f = 0, m = 0, n = 0, p = 0, q = 0, mod = 1000000007, pi = 3.1415926535;
    string s1, s2;
    char moji;

   cin >> a >> b >> c;
   d=a+b;
   c--;
   for(int i=0;i<d;i++)
   {
       if(ncr(a+b-1,max(a-1,b))<=c)
       {
           c-=ncr(a+b-1,max(a-1,b));
           cout << 'b';
           b--;
       }
       else
       {
           if(a)
           {
               cout << 'a';
             a--;
           }
           else
           {
              cout << 'b';
             b--;
           }
       }
   }
   cout << endl;
    return 0;
}
#include <iostream>
#include <string>
constexpr int MAX = 30;
long long dp[MAX + 1][MAX + 1];
std::string find_kth(int A, int B, long long K) {
    if (A == 0) {
        return std::string(B, 'b');
    }
    if (B == 0) {
        return std::string(A, 'a');
    }
    if (K <= dp[A - 1][B]) {
        return std::string("a") + find_kth(A - 1, B, K);
    }
    else {
        return std::string("b") + find_kth(A, B - 1, K - dp[A - 1][B]);
    }
}
int main() {
    int A, B;
    long long K;
    std::cin >> A >> B >> K;
    dp[0][0] = 1;
    for (int i = 0; i <= A; ++i) {
        for (int j = 0; j <= B; ++j) {
            if (i > 0) {
                dp[i][j] += dp[i - 1][j];
            }
            if (j > 0) {
                dp[i][j] += dp[i][j - 1];
            }
        }
    }
    std::cout << find_kth(A, B, K) << '\n';
    return 0;
}