#include<bits/stdc++.h>
using namespace std;
#define int long long
int mod=1e9+7;
const int N=1e6+10;

int32_t main()
{
    vector<int> prime(N+1);
    for(int i=2;i<=N;i++)
    {
        if(!prime[i])
        {
            for(int j=i;j<=N;j+=i)
            {
                if(!prime[j])
                {
                    prime[j]=i;
                }
            }
        }
    }
    vector<int> mobius(N+1);
    mobius[1]=1;
    for(int i=2;i<=N;i++)
    {
        if(prime[i/prime[i]]==prime[i])
        mobius[i]=0;
        else
        mobius[i]=-1*mobius[i/prime[i]];
    }
    int l,r;
    cin>>l>>r;
    int ans=0;
    for(int i=1;i<=N;i++)
    {
        for(int j=i;j<=N;j+=i)
        {
            if(j>=l&&j<=r)
            ans+=mobius[i]*(j/i-(l-1)/i);
        }
    }

    for(int i=max(2ll,l);i<=r;i++)
    {
        ans+=r/i-1;
    }
    if(l==1)
    ans--;
    int n=r-l+1;
    int res=(n*(n-1))/2;
    res=res-ans;
    cout<<2*res<<endl;
    

}
#include <stdio.h>
#include <iostream>
#include <vector>
#include <queue>
#include <stack>
#include <algorithm>

using ll = long long int;
const int INF = (1<<30);
const ll INFLL = (1ll<<60);
const ll MOD = (ll)(1e9+7);

#define l_ength size

void mul_mod(ll& a, ll b){
	a *= b;
	a %= MOD;
}

void add_mod(ll& a, ll b){
	a = (a<MOD)?a:(a-MOD);
	b = (b<MOD)?b:(b-MOD);
	a += b;
	a = (a<MOD)?a:(a-MOD);
}

bool done[66][66];
ll memo[66][66];

ll c(int n, int k){
	if(done[n][k]){
		return memo[n][k];
	}
	done[n][k] = true;
	if(k==0 || k == n){
		return memo[n][k] = 1ll;
	}
	return memo[n][k] = c(n-1,k-1)+c(n-1,k);
}

int main(void){
	int a,b,n,i;
	ll k;
	std::cin >> a >> b >> k; n = a+b; --k;
	for(i=0; i<n; ++i){
		if(!a){
			std::cout << "b";
			--b;
		}else if(!b){
			std::cout << "a";
			--a;
		}else if(k >= c(a+b-1,a-1)){
			std::cout << "b";
			k -= c(a+b-1,a-1);
			--b;
		}else{
			std::cout << "a";
			--a;
		}
	}
	std::cout << std::endl;
	return 0;
}
