#include <bits/stdc++.h>
using namespace std;
#define rep(i,n) for(int i = 0; i < (int)n; i++)
using ll = long long;
constexpr ll MAX = 61;

int main(){
  ll a, b, k;
  cin >> a >> b >> k;
  vector<vector<ll>> comb(MAX,vector<ll>(MAX));
  rep(i,MAX) comb[i][0] = 1;
  for(int i = 1; i < MAX; i++) {
    for(int j = 1; j <= i; j++) comb[i][j] = comb[i-1][j-1] + comb[i-1][j];
  }
  string ans;
  int len = a + b;
  rep(x,len) {
    if(b == 0) {
      ans += 'a';
      a--;
      continue;
    }
    if(a == 0) {
      ans += 'b';
      b--;
      continue;
    }
    ll na = comb[a+b-1][b];
    if(k > na) {
      ans += 'b';
      b--;
      k -= na;
    } else {
      ans += 'a';
      a--;
    }
  }
  cout << ans << endl;
  return 0;
}

#include<bits/stdc++.h>

using namespace std;

#define gc c=getchar()
#define r(x) read(x)
#define ll long long
#define db double

template<typename T>
inline void read(T&x){
    x=0;T k=1;char gc;
    while(!isdigit(c)){if(c=='-')k=-1;gc;}
    while(isdigit(c)){x=x*10+c-'0';gc;}x*=k;
}

const int p=998244353;
const int N=3001;

inline void add(int &a,const int &b){
     if((a+=b)>=p)a-=p;
}

int f[N][N];

int main(){
    // freopen(".in","r",stdin);
    // freopen(".out","w",stdout);
    int n,k;r(n),r(k);
    f[0][0]=1;
    for(int i=1;i<=n;++i){
        for(int j=i;j;--j){
            f[i][j]=f[i-1][j-1];
            if(j*2<=i)add(f[i][j],f[i][j<<1]);
        }
    }
    printf("%d\n",f[n][k]);
}