#include <bits/stdc++.h>
using namespace std;
const int MAXN = (int)1e5 + 5;
int x[3];
int y[3];
int buf;
int main() {
  buf = 0;
  cin >> x[0] >> y[0] >> x[1] >> y[1] >> x[2] >> y[2];
  for (long long i = 0; i < 3; ++i) {
    if (x[i] < y[i]) {
      buf = x[i];
      x[i] = y[i];
      y[i] = buf;
    }
  }
  int n = max(x[0], x[1]);
  n = max(n, x[2]);
  bool eq = (x[0] == x[1] && x[1] == x[2]);
  if (eq && x[0] == (y[0] + y[1] + y[2])) {
    cout << n << '\n';
    for (long long i = 0; i < 3; ++i) {
      for (long long j = 0; j < y[i]; ++j) {
        for (long long p = 0; p < n; ++p) {
          cout << (char)(65 + i);
        }
        cout << "\n";
      }
    }
    return 0;
  }
  int max = 0;
  int med = 1;
  int min = 2;
  if (n == x[1]) {
    max = 1;
    med = 0;
  }
  if (n == x[2]) {
    max = 2;
    min = 0;
    med = 1;
  }
  if (n - y[max] == x[med] && n - y[max] == x[min] && n == y[med] + y[min]) {
    cout << n << '\n';
    for (long long j = 0; j < y[max]; ++j) {
      for (long long p = 0; p < n; ++p) {
        cout << (char)(65 + max);
      }
      cout << "\n";
    }
    for (long long j = 0; j < n - y[max]; ++j) {
      for (long long p = 0; p < y[med]; ++p) {
        cout << (char)(65 + med);
      }
      for (long long p = 0; p < y[min]; ++p) {
        cout << (char)(65 + min);
      }
      cout << "\n";
    }
    return 0;
  }
  if (n - y[max] == y[med] && n - y[max] == y[min] && n == x[med] + x[min]) {
    cout << n << '\n';
    for (long long j = 0; j < y[max]; ++j) {
      for (long long p = 0; p < n; ++p) {
        cout << (char)(65 + max);
      }
      cout << "\n";
    }
    for (long long j = 0; j < n - y[max]; ++j) {
      for (long long p = 0; p < x[med]; ++p) {
        cout << (char)(65 + med);
      }
      for (long long p = 0; p < x[min]; ++p) {
        cout << (char)(65 + min);
      }
      cout << "\n";
    }
    return 0;
  }
  if (n - y[max] == y[med] && n - y[max] == x[min] && n == x[med] + y[min]) {
    cout << n << '\n';
    for (long long j = 0; j < y[max]; ++j) {
      for (long long p = 0; p < n; ++p) {
        cout << (char)(65 + max);
      }
      cout << "\n";
    }
    for (long long j = 0; j < n - y[max]; ++j) {
      for (long long p = 0; p < x[med]; ++p) {
        cout << (char)(65 + med);
      }
      for (long long p = 0; p < y[min]; ++p) {
        cout << (char)(65 + min);
      }
      cout << "\n";
    }
    return 0;
  }
  if (n - y[max] == x[med] && n - y[max] == y[min] && n == y[med] + x[min]) {
    cout << n << '\n';
    for (long long j = 0; j < y[max]; ++j) {
      for (long long p = 0; p < n; ++p) {
        cout << (char)(65 + max);
      }
      cout << "\n";
    }
    for (long long j = 0; j < n - y[max]; ++j) {
      for (long long p = 0; p < y[med]; ++p) {
        cout << (char)(65 + med);
      }
      for (long long p = 0; p < x[min]; ++p) {
        cout << (char)(65 + min);
      }
      cout << "\n";
    }
    return 0;
  }
  cout << -1;
  return 0;
}
