#include <bits/stdc++.h>

using namespace std;
using ll = long long;
// #define int long long
using ld = long double;

#define all(v) (v).begin(), (v).end()
#define db(x) cerr << #x << " = " << x << '\n'
#define mp make_pair
#define eb emplace_back
#define pb push_back
#define sz(v) (int)((v).size())
#define pw(x) (1LL << (int)(x))
#define fr(i, a, b) for (int i = (a); i <= (b); ++i)
#define rf(i, a, b) for (int i = (a); i >= (b); --i)
#define fe(x, y) for (auto &x: y)
#define fi first
#define se second

mt19937_64 rng(566);

ll rnd(ll l, ll r) {
    return rng() % (r - l + 1) + l;
}

template<typename T>
bool umn(T &a, T b) {
    return a > b ? a = b, 1 : 0;
}

template<typename T>
bool umx(T &a, T b) {
    return a < b ? a = b, 1 : 0;
}

template<typename T>
using ve = vector<T>;

using pii = pair<int, int>;
using pll = pair<ll, ll>;

const double eps = 1e-8;
const ll mod = 1e9 + 8;
const int inf0 = 1e9 + 10;
const ll inf = 2e18 + 10;

void solve();

signed main() {
    ios::sync_with_stdio(false);
    cin.tie(nullptr);
#ifdef LC
    freopen("input.txt", "r", stdin);
    freopen("output.txt", "w", stdout);
#endif
    int t = 1;
    // cin >> t;
    while (t--) {
        solve();
    }
    return 0;
}

constexpr int LG = 1010;

vector <pair <int, pair <int, int> > > V;

int dist[3][3];

string Ans[3];

void solve() {
    int v;
    cin >> v;
    V.push_back({v, {0, 1}});
    cin >> v;
    V.push_back({v, {0, 2}});
    cin >> v;
    V.push_back({v, {1, 2}});

    sort(V.begin(), V.end());

    if (V[0].first + V[1].first < V[2].first) {
        cout << "No\n";
        return;
    }

    cout << "Yes\n";

    int smallestIndex = 3 - V.back().second.first - V.back().second.second;

    for (int i = 0; i < LG; ++ i )
        Ans[smallestIndex] += "a";

    int nxtIndex = (V[0].second.first == smallestIndex ? V[0].second.second : V[0].second.first);
    for (int i = 0; i < V[0].first; ++ i )
        Ans[nxtIndex] += "b";
    for (int i = V[0].first; i < LG; ++ i )
        Ans[nxtIndex] += "a";

    int specialPos = V[0].first;
    int lgC = V[1].first;
    int diff = V[2].first - V[0].first - V[1].first;
    int lastIndex = 3 - smallestIndex - nxtIndex;

    for (int i = 0; i < specialPos + diff; ++ i )
        Ans[lastIndex] += "a";
    for (int i = specialPos + diff; i < V[2].first; ++ i )
        Ans[lastIndex] += "c";
    for (int i = V[2].first; i < LG; ++ i )
        Ans[lastIndex] += "a";

    for (int i = 0; i < 3; ++ i )
        cout << Ans[i] << '\n';
}
