#include <bits/stdc++.h>
using namespace std;
int place_type = 0;
int sub_compare(int *a) {
  if (a[0] == a[2] && a[0] == a[4] && a[0] == a[1] + a[3] + a[5])
    return place_type = 1;
  else if (a[0] == a[2] + a[4] && a[0] == a[1] + a[3] && a[0] == a[1] + a[5])
    return place_type = 2;
  else
    return 0;
}
void sub_print(int *a, int var) {
  char lrs[3];
  char fill[a[0] + 1];
  int i;
  var /= 8;
  fill[a[0]] = 0;
  lrs[0] = 'A' + ((var / 2) % 3);
  lrs[1] = 'A' + (((var + 3) / 2) % 3);
  lrs[2] = 'C' - var % 3;
  cout << a[0] << endl;
  if (place_type == 1) {
    memset(fill, lrs[0], a[0]);
    for (i = 0; i < a[1]; i++) cout << fill << endl;
    memset(fill, lrs[1], a[0]);
    for (i = 0; i < a[3]; i++) cout << fill << endl;
    memset(fill, lrs[2], a[0]);
    for (i = 0; i < a[5]; i++) cout << fill << endl;
  } else if (place_type == 2) {
    memset(fill, lrs[0], a[0]);
    for (i = 0; i < a[1]; i++) cout << fill << endl;
    memset(fill, lrs[1], a[2]);
    memset(&fill[a[2]], lrs[2], a[4]);
    for (i = 0; i < a[5]; i++) cout << fill << endl;
  }
}
int main(...) {
  int a[6], i, j;
  cin >> a[0] >> a[1] >> a[2] >> a[3] >> a[4] >> a[5];
  for (i = 1; i <= 50; i++) {
    if (i % 8 == 0)
      if ((i / 8) % 2 == 0)
        swap(a[0], a[4]), swap(a[1], a[5]);
      else
        swap(a[2], a[4]), swap(a[3], a[5]);
    if (sub_compare(a)) {
      sub_print(a, i);
      return 0;
    }
    swap(a[4], a[5]);
    if (i % 2 == 0) swap(a[2], a[3]);
    if (i % 4 == 0) swap(a[0], a[1]);
  }
  cout << -1 << endl;
  return 0;
}
