#include<iostream> #include<vector> #include<string> #include<array> #include<algorithm> #include<list> #include<cmath> #include<iomanip> #include<queue> #include<functional> #include<climits> #include<iterator> #include<unordered_set> #include<unordered_map> #include<map> #include<set> #include<typeinfo> #include<numeric> #include<complex> #include<memory> #include<fstream> #include<chrono> #include<random> using namespace std; const double pi=4*atan(1.0); constexpr long long mod=static_cast<long long>(1e9+7); using cWeightEdges=vector<vector<pair<int,int>>>; using cEdges=vector<vector<int>>; int main(){ long long x,y,z; cin>>x>>y>>z; bool is_find=false; long long n=1; string ans; while(2*(n-1)+1<=10000){ long long rest=z-n*x; if(rest%y==0){ long long m=rest/y; if(2*n-1+2*abs(m)-1+1<=10000){ is_find=true; string s1(n,'c'); string s2(n-1,'C'); string s3(abs(m),'w'); string s4((m!=0?abs(m)-1:0),'C'); if(m==0){ ans+=s1+s2; } else if(m>0){ ans+=s1+s2+s3+s4; ans+="C"; } else{ ans+=s1+s2+s3+s4; ans+="W"; } break; } } ++n; } if(!is_find){ while(2*(n-1)+1<=10000){ long long rest=z-n*y; if(rest%x==0){ long long m=rest/x; if(2*n-1+2*abs(m)-1+1<=10000){ is_find=true; string s1(n,'w'); string s2(n-1,'C'); string s3(abs(m),'c'); string s4((m!=0?abs(m)-1:0),'C'); if(m==0){ ans+=s1+s2; } else if(m>0){ ans+=s1+s2+s3+s4; ans+="C"; } else{ ans+=s1+s2+s3+s4; ans+="W"; } break; } } } ++n; } if(is_find)cout<<ans<<endl; else cout<<"mourennaihasimasenn"<<endl; //system("pause"); return 0; }