#include <algorithm>  
#include <iostream>  
#include <sstream>  
#include <string>  
#include <cstring>
#include <vector>  
#include <queue>  
#include <set>  
#include <map>  
#include <cstdio>  
#include <cstdlib>  
#include <cctype>  
#include <cmath>  
#include <list>  
#include <cassert>
#include <ctime>
#include <climits>
using namespace std;  

#define PB push_back  
#define MP make_pair  
#define SZ(v) ((int)(v).size())  
#define FOR(i,a,b) for(int i=(a);i<(b);++i)  
#define REP(i,n) FOR(i,0,n)  
#define FORE(i,a,b) for(int i=(a);i<=(b);++i)  
#define REPE(i,n) FORE(i,0,n)  
#define FORSZ(i,a,v) FOR(i,a,SZ(v))  
#define REPSZ(i,v) REP(i,SZ(v))  
typedef long long ll;
typedef unsigned long long ull;
ll gcd(ll a,ll b) { return b==0?a:gcd(b,a%b); }

string solve(int na, int nb, int nc) {
	if (na == 0 && nb == 0 && nc == 0) return "";
	if (na == 0) { string ret = solve(nb, nc, 0); REPSZ(i, ret) ++ret[i]; return ret; }
	vector<string> parts;
	string cur = "a"; int curcnt = na; na = 0;
	while (na+nb+nc>0) {
		if (nc >= curcnt) { cur += "c"; nc -= curcnt; continue; }
		while (nc > 0) parts.PB(cur + "c"), --curcnt, --nc;
		if (nb >= curcnt) { cur += "b"; nb -= curcnt; continue; }
		while (nb > 0) parts.PB(cur + "b"), --curcnt, --nb;
	}
	while (SZ(parts) > 0) {
		int rep = curcnt / SZ(parts), rem = curcnt%SZ(parts); if (rem == 0) --rep, rem = SZ(parts);
		string pref; REP(i, rep) pref += cur; string nxt = pref + cur + parts[rem - 1];
		int nxtcnt = 1; while (nxtcnt < rem&&parts[rem - 1] == parts[rem - 1 - nxtcnt]) ++nxtcnt;
		vector<string> nparts; FORSZ(i, rem, parts) nparts.PB(pref + parts[i]); REP(i, rem - nxtcnt) nparts.PB(pref + cur + parts[i]);
		parts = nparts; cur = nxt; curcnt = nxtcnt;
	}
	string ret; REP(i, curcnt) ret += cur; return ret;
}

void run() {
	int na, nb, nc;
	scanf("%d%d%d", &na, &nb, &nc);
	string s = solve(na, nb, nc);
	printf("%s\n", s.c_str());
}

string other(int a,int b,int c) {
	multiset<string> s;
	while (a--) s.insert("a");
	while (b--) s.insert("b");
	while (c--) s.insert("c");
	while ((int)s.size() > 1) {
		string t = *s.begin() + *--s.end();
		s.erase(s.begin());
		s.erase(--s.end());
		s.insert(t);
	}
	return *s.begin();
}

int main() {
	run();
	return 0;
}
