///////////////////////////////    _LeMur_
#define _CRT_SECURE_NO_WARNINGS
#include <unordered_map>
#include <unordered_set>
#include <algorithm>
#include <iostream>
#include <cstring>
#include <complex>
#include <cassert>
#include <cfloat>
#include <memory>
#include <chrono>
#include <random>
#include <climits>
#include <limits>
#include <bitset>
#include <cstdio>
#include <vector>
#include <string>
#include <stack>
#include <tuple>
#include <queue>
#include <ctime>
#include <cmath>
#include <list>
#include <map>
#include <set>

using namespace std;

const int N = 1000005;
const int inf = 1000 * 1000 * 1000;
const int mod = 1000 * 1000 * 1000 + 7;
// mt19937 myrand(chrono::steady_clock::now().time_since_epoch().count());
mt19937 myrand(373);

int a[3];
vector < vector<int> > other = {{1, 2}, {0, 2}, {0, 1}};

void same() {
  cout << "Yes" << endl;
  for (int i = 0; i < 3; i++) {
    cout << "a" << endl;
  }
}

char x[] = {'a', 'b', 'c'};

void almost_same(int x, int len) {
  cout << "Yes" << endl;
  for (int i = 0; i < 3; i++) {
    if (i == x) {
      for (int j = 0; j < len; j++) {
        cout << "b";
      }
      cout << endl;
    } else {
      for (int j = 0; j < len; j++) {
        cout << "a";
      }
      cout << endl;
    }
  }
}

int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);

  cin >> a[0] >> a[1] >> a[2];

  for (int i = 0; i < 3; i++) {
    if (a[i] == 0) {
      if (a[ other[i][0] ] == a[ other[i][1] ]) {
        if (a[ other[i][0] ] == 0) {
          same();
        } else {
          almost_same(2 - i, a[ other[i][0] ]);
        }
      } else {
        cout << "No" << endl;
      }
      return 0;
    }
  }

  int len = max(a[2], max(a[0], a[1]));
  int sum = 0;

  for (int i = 0; i < 3; i++) {
    sum += len - a[i];
  }

  if (sum > len) {
    cout << "No" << endl;
    return 0;
  }

  cout << "Yes" << endl;

  string answ[3];
  for (int i = 0; i < 3; i++) {
    answ[i] = "";
    for (int j = 0; j < len; j++) {
      answ[i] += x[i];
    }
  }

  if (a[1] == len) {
    int delta = len - a[0];
    for (int i = 0; i < delta; i++) {
      answ[0][i] = 'b';
    }
    delta = len - a[2];
    for (int i = len - 1; i >= len - delta; i--) {
      answ[2][i] = 'b';
    }
  } else if (a[0] == len) {
    int delta = len - a[1];
    for (int i = 0; i < delta; i++) {
      answ[0][i] = 'c';
    }
    delta = len - a[2];
    for (int i = len - 1; i >= len - delta; i--) {
      answ[1][i] = 'c';
    }
  } else if (a[2] == len) {
    int delta = len - a[0];
    for (int i = 0; i < delta; i++) {
      answ[1][i] = 'a';
    }
    delta = len - a[1];
    for (int i = len - 1; i >= len - delta; i--) {
      answ[2][i] = 'a';
    }
  }

  for (int i = 0; i < 3; i++) {
    cout << answ[i] << endl;
  }
  return 0;
}
