#include <bits/stdc++.h>
using namespace std;
inline long long input(void) {
  char t;
  long long x = 0;
  int neg = 0;
  t = getchar();
  while ((t < 48 || t > 57) && t != '-') t = getchar();
  if (t == '-') {
    neg = 1;
    t = getchar();
  }
  while (t >= 48 && t <= 57) {
    x = (x << 3) + (x << 1) + t - 48;
    t = getchar();
  }
  if (neg) x = -x;
  return x;
}
inline void output(long long x) {
  char a[20];
  int i = 0, j;
  a[0] = '0';
  if (x < 0) {
    putchar('-');
    x = -x;
  }
  if (x == 0) putchar('0');
  while (x) {
    a[i++] = x % 10 + 48;
    x /= 10;
  }
  for (j = i - 1; j >= 0; j--) {
    putchar(a[j]);
  }
  putchar('\n');
}
vector<pair<pair<long long, long long>, char> > v;
long long existperm() {
  long long ans = -1, x;
  if (v[0].first.first + v[1].first.first == v[2].first.first &&
      v[1].first.second == v[0].first.second &&
      v[2].first.second + v[0].first.second == v[2].first.first)
    return 1;
  if (v[0].first.second + v[1].first.first == v[2].first.first &&
      v[1].first.second == v[0].first.first &&
      v[2].first.second + v[0].first.first == v[2].first.first) {
    x = v[0].first.first;
    v[0].first.first = v[0].first.second;
    v[0].first.second = x;
    return 2;
  }
  if (v[0].first.first + v[1].first.second == v[2].first.first &&
      v[1].first.first == v[0].first.second &&
      v[2].first.second + v[0].first.second == v[2].first.first) {
    x = v[1].first.first;
    v[1].first.first = v[1].first.second;
    v[1].first.second = x;
    return 3;
  }
  if (v[0].first.second + v[1].first.second == v[2].first.first &&
      v[1].first.first == v[0].first.first &&
      v[2].first.second + v[0].first.first == v[2].first.first) {
    x = v[0].first.first;
    v[0].first.first = v[0].first.second;
    v[0].first.second = x;
    x = v[1].first.first;
    v[1].first.first = v[1].first.second;
    v[1].first.second = x;
    return 4;
  }
  return ans;
}
int main() {
  long long i, j, x, y;
  for (i = 0; i < 3; i++) {
    x = input();
    y = input();
    v.push_back(make_pair(make_pair(max(x, y), min(x, y)), 'A' + i));
  }
  sort(v.begin(), v.end());
  if (v[0].first.first == v[1].first.first &&
      v[1].first.first == v[2].first.first) {
    if (v[0].first.second + v[1].first.second + v[2].first.second ==
        v[0].first.first) {
      output(v[0].first.first);
      for (i = 0; i < v[0].first.first; i++) {
        for (j = 0; j < v[0].first.first; j++) {
          if (i < v[0].first.second)
            putchar(v[0].second);
          else if (i < v[0].first.second + v[1].first.second)
            putchar(v[1].second);
          else
            putchar(v[2].second);
        }
        printf("\n");
      }
    } else
      printf("-1\n");
    return 0;
  }
  j = existperm();
  if (j != -1) {
    output(v[2].first.first);
    for (i = 0; i < v[2].first.second; i++) {
      for (j = 0; j < v[2].first.first; j++) putchar(v[2].second);
      putchar('\n');
    }
    x = v[0].first.second;
    y = v[0].first.first;
    for (i = 0; i < v[0].first.second; i++) {
      for (j = 0; j < v[2].first.first; j++) {
        if (j < y)
          putchar(v[0].second);
        else
          putchar(v[1].second);
      }
      putchar('\n');
    }
  } else
    printf("-1\n");
  return 0;
}
