第三题
#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;
}