#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #ifdef LOCAL # include "debug_print.hpp" # define debug(...) debug_print::multi_print(#__VA_ARGS__, __VA_ARGS__) #else # define debug(...) (static_cast(0)) #endif using namespace std; #define rep(i,n) for(int i=0; i<(n); i++) #define rrep(i,n) for(int i=(n)-1; i>=0; i--) #define FOR(i,a,b) for(int i=(a); i<(b); i++) #define RFOR(i,a,b) for(int i=(b-1); i>=(a); i--) #define ALL(v) v.begin(), v.end() #define RALL(v) v.rbegin(), v.rend() #define UNIQUE(v) v.erase( unique(v.begin(), v.end()), v.end() ); #define pb push_back using ll = long long; using D = double; using LD = long double; using P = pair; template using PQ = priority_queue>; template using minPQ = priority_queue, greater>; templatebool chmax(T &a, const T &b) { if (abool chmin(T &a, const T &b) { if (b ostream &operator<<(ostream &os, const pair &p) { os << p.first << " " << p.second; return os; } template istream &operator>>(istream &is, pair &p) { is >> p.first >> p.second; return is; } template ostream &operator<<(ostream &os, const vector &v) { int s = (int)v.size(); for (int i = 0; i < s; i++) os << (i ? " " : "") << v[i]; return os; } template istream &operator>>(istream &is, vector &v) { for (auto &x : v) is >> x; return is; } void in() {} template void in(T &t, U &...u) { cin >> t; in(u...); } void out() { cout << "\n"; } template void out(const T &t, const U &...u) { cout << t; if (sizeof...(u)) cout << sep; out(u...); } void outr() {} template void outr(const T &t, const U &...u) { cout << t; outr(u...); } long long extGCD(long long a, long long b, long long &x, long long &y) { if (b == 0) { x = 1; y = 0; return a; } long long d = extGCD(b, a%b, y, x); y -= a/b * x; return d; } int main(){ ios_base::sync_with_stdio(false); cin.tie(nullptr); ll x,y,z; in(x,y,z); if(x == 0 && y == 0){ if(z == 0){ out("c"); return 0; } else{ out("NO"); return 0; } } else if(x == 0){ if(z == 0){ out("c"); return 0; } if(z%y != 0){ out("NO"); return 0; } int r = z/y; if(r+r-1 <= 1000){ string ans; rep(_,r) ans += 'w'; rep(_,r-1) ans += 'C'; out(ans); return 0; } else{ out("NO"); return 0; } } else if(y == 0){ if(z == 0){ out("w"); return 0; } if(z%x != 0){ out("NO"); return 0; } int r = z/x; if(r+r-1 <= 10000){ string ans; rep(_,r) ans += 'c'; rep(_,r-1) ans += 'C'; out(ans); return 0; } else{ out("NO"); return 0; } } ll g = gcd(x,y), l = lcm(x,y); ll p = l/x, q = l/y; if(z%g != 0){ out("NO"); return 0; } ll a0, b0; extGCD(x,y,a0,b0); a0 *= z/g; b0 *= z/g; if(a0 < 5001){ ll w = (5001-a0) / p; a0 += w * p; b0 -= w * q; } else if(a0 > 5001){ ll w = (a0-5002+p) / p; a0 -= w * p; b0 += w * q; } while(a0 >= -5001){ if(abs(a0)+abs(b0) <= 5001){ assert(a0*x+b0*y == z); string ans; if(a0 == 0){ rep(_,b0) ans += 'w'; rep(_,b0-1) ans += 'C'; } else if(b0 == 0){ rep(_,a0) ans += 'c'; rep(_,a0-1) ans += 'C'; } else if(a0 > 0 && b0 > 0){ rep(_,a0) ans += 'c'; rep(_,b0) ans += 'w'; rep(_,a0+b0-2) ans += 'C'; } else if(b0 < 0){ rep(_,abs(b0)) ans += 'w'; rep(_,a0) ans += 'c'; rep(_,a0-1) ans += 'C'; rep(_,abs(b0)-1) ans += 'W'; } else if(a0 < 0){ rep(_,abs(a0)) ans += 'c'; rep(_,b0) ans += 'w'; rep(_,b0-1) ans += 'C'; rep(_,abs(a0)-1) ans += 'W'; } assert(ans.size() <= 10000); out(ans); return 0; } a0 -= p; b0 += q; } out("NO"); }