第三题
#include<bits/stdc++.h>
using namespace std;
long long const INF=1e10;
long long const maxn=105;
long long dp[maxn][maxn];
void init() {
    dp[0][0]=1;
    for(long long i=0;i<=100;i++) dp[i][0]=dp[0][i]=1;
    for(long long i=1;i<=100;i++)
    for(long long j=1;j<=100;j++) {
        dp[i][j]=min(INF,dp[i-1][j]+dp[i][j-1]);
    }
}

long long n,m,k;
void dfs(string & ans) {
   if(n==0) {ans.append(m,'z');return;}
   if(m==0) {ans.append(n,'a');return;}
   if(k<=dp[n-1][m]) {
      n--;ans+='a';dfs(ans);
   }
   else {
     k-=dp[n-1][m--];ans+='z';dfs(ans);
   }
}

int main() {
   init();
   scanf("%lld%lld%lld",&n,&m,&k);
   if(k>dp[n][m]) {
    cout<<-1<<endl;
    return 0;
   }
   string ans;
   dfs(ans);
   cout<<ans<<endl;

}