#pragma GCC optimize ("Ofast")
#include<bits/stdc++.h>
using namespace std;
template < class S, class T> inline S min_L( S a,T b) {
return a<= b? a: b;
}
#define main dummy_main
int main( ) {
return 0 ;
}
#undef main
class Solution{
public :
string longestDiverseString( int a, int b, int c) {
string res;
char aa = 'a' ;
char bb = 'b' ;
char cc = 'c' ;
if ( a < b) {
swap( a, b) ;
swap( aa, bb) ;
}
if ( b < c) {
swap( b, c) ;
swap( bb, cc) ;
}
if ( a < b) {
swap( a, b) ;
swap( aa, bb) ;
}
for ( ;; ) {
if ( b== c && c== 0 ) {
int e98WHCEY;
for ( e98WHCEY= ( 0 ) ; e98WHCEY< ( min_L( a, 2 ) ) ; e98WHCEY++ ) {
res + = aa;
a-- ;
}
break ;
}
if ( a > b) {
res + = aa;
a-- ;
if ( a > b) {
res + = aa;
a-- ;
}
if ( b == c) {
res + = cc;
c-- ;
}
else {
res + = bb;
b-- ;
}
continue ;
}
res + = aa;
a-- ;
res + = bb;
b-- ;
if ( c) {
res + = cc;
c-- ;
}
}
return res;
}
}
;
// cLay varsion 20200408-1
// --- original code ---
// #define main dummy_main
// {}
// #undef main
//
// class Solution {
// public:
// string longestDiverseString(int a, int b, int c) {
// string res;
// char aa = 'a', bb = 'b', cc = 'c';
// if(a < b) swap(a, b), swap(aa, bb);
// if(b < c) swap(b, c), swap(bb, cc);
// if(a < b) swap(a, b), swap(aa, bb);
//
// for(;;){
// if(b==c==0){
// rep(min(a,2)) res += aa, a--;
// break;
// }
//
// if(a > b){
// res += aa, a--;
// if(a > b) res += aa, a--;
// if(b == c) res += cc, c--;
// else res += bb, b--;
// continue;
// }
//
// res += aa, a--;
// res += bb, b--;
// if(c) res += cc, c--;
// }
//
// return res;
// }
// };
I3ByYWdtYSBHQ0Mgb3B0aW1pemUgKCJPZmFzdCIpCiNpbmNsdWRlPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CnRlbXBsYXRlPGNsYXNzIFMsIGNsYXNzIFQ+IGlubGluZSBTIG1pbl9MKFMgYSxUIGIpewogIHJldHVybiBhPD1iP2E6YjsKfQojZGVmaW5lIG1haW4gZHVtbXlfbWFpbgppbnQgbWFpbigpewogIHJldHVybiAwOwp9CiN1bmRlZiBtYWluCmNsYXNzIFNvbHV0aW9uewogIHB1YmxpYzoKICBzdHJpbmcgbG9uZ2VzdERpdmVyc2VTdHJpbmcoaW50IGEsIGludCBiLCBpbnQgYyl7CiAgICBzdHJpbmcgcmVzOwogICAgY2hhciBhYSA9ICdhJzsKICAgIGNoYXIgYmIgPSAnYic7CiAgICBjaGFyIGNjID0gJ2MnOwogICAgaWYoYSA8IGIpewogICAgICBzd2FwKGEsIGIpOwogICAgICBzd2FwKGFhLCBiYik7CiAgICB9CiAgICBpZihiIDwgYyl7CiAgICAgIHN3YXAoYiwgYyk7CiAgICAgIHN3YXAoYmIsIGNjKTsKICAgIH0KICAgIGlmKGEgPCBiKXsKICAgICAgc3dhcChhLCBiKTsKICAgICAgc3dhcChhYSwgYmIpOwogICAgfQogICAgZm9yKDs7KXsKICAgICAgaWYoYj09YyAmJiBjPT0wKXsKICAgICAgICBpbnQgZTk4V0hDRVk7CiAgICAgICAgZm9yKGU5OFdIQ0VZPSgwKTtlOThXSENFWTwobWluX0woYSwgMikpO2U5OFdIQ0VZKyspewogICAgICAgICAgcmVzICs9IGFhOwogICAgICAgICAgYS0tOwogICAgICAgIH0KICAgICAgICBicmVhazsKICAgICAgfQogICAgICBpZihhID4gYil7CiAgICAgICAgcmVzICs9IGFhOwogICAgICAgIGEtLTsKICAgICAgICBpZihhID4gYil7CiAgICAgICAgICByZXMgKz0gYWE7CiAgICAgICAgICBhLS07CiAgICAgICAgfQogICAgICAgIGlmKGIgPT0gYyl7CiAgICAgICAgICByZXMgKz0gY2M7CiAgICAgICAgICBjLS07CiAgICAgICAgfQogICAgICAgIGVsc2V7CiAgICAgICAgICByZXMgKz0gYmI7CiAgICAgICAgICBiLS07CiAgICAgICAgfQogICAgICAgIGNvbnRpbnVlOwogICAgICB9CiAgICAgIHJlcyArPSBhYTsKICAgICAgYS0tOwogICAgICByZXMgKz0gYmI7CiAgICAgIGItLTsKICAgICAgaWYoYyl7CiAgICAgICAgcmVzICs9IGNjOwogICAgICAgIGMtLTsKICAgICAgfQogICAgfQogICAgcmV0dXJuIHJlczsKICB9Cn0KOwovLyBjTGF5IHZhcnNpb24gMjAyMDA0MDgtMQoKLy8gLS0tIG9yaWdpbmFsIGNvZGUgLS0tCi8vICNkZWZpbmUgbWFpbiBkdW1teV9tYWluCi8vIHt9Ci8vICN1bmRlZiBtYWluCi8vIAovLyBjbGFzcyBTb2x1dGlvbiB7Ci8vIHB1YmxpYzoKLy8gICBzdHJpbmcgbG9uZ2VzdERpdmVyc2VTdHJpbmcoaW50IGEsIGludCBiLCBpbnQgYykgewovLyAgICAgc3RyaW5nIHJlczsKLy8gICAgIGNoYXIgYWEgPSAnYScsIGJiID0gJ2InLCBjYyA9ICdjJzsKLy8gICAgIGlmKGEgPCBiKSBzd2FwKGEsIGIpLCBzd2FwKGFhLCBiYik7Ci8vICAgICBpZihiIDwgYykgc3dhcChiLCBjKSwgc3dhcChiYiwgY2MpOwovLyAgICAgaWYoYSA8IGIpIHN3YXAoYSwgYiksIHN3YXAoYWEsIGJiKTsKLy8gCi8vICAgICBmb3IoOzspewovLyAgICAgICBpZihiPT1jPT0wKXsKLy8gICAgICAgICByZXAobWluKGEsMikpIHJlcyArPSBhYSwgYS0tOwovLyAgICAgICAgIGJyZWFrOwovLyAgICAgICB9Ci8vIAovLyAgICAgICBpZihhID4gYil7Ci8vICAgICAgICAgcmVzICs9IGFhLCBhLS07Ci8vICAgICAgICAgaWYoYSA+IGIpIHJlcyArPSBhYSwgYS0tOwovLyAgICAgICAgIGlmKGIgPT0gYykgcmVzICs9IGNjLCBjLS07Ci8vICAgICAgICAgZWxzZSAgICAgICByZXMgKz0gYmIsIGItLTsKLy8gICAgICAgICBjb250aW51ZTsKLy8gICAgICAgfQovLyAKLy8gICAgICAgcmVzICs9IGFhLCBhLS07Ci8vICAgICAgIHJlcyArPSBiYiwgYi0tOwovLyAgICAgICBpZihjKSByZXMgKz0gY2MsIGMtLTsKLy8gICAgIH0KLy8gCi8vICAgICByZXR1cm4gcmVzOwovLyAgIH0KLy8gfTsK