#include <bits/stdc++.h>
using namespace std;
struct P {
  int x, y;
  char c;
  P(int x = 0, int y = 0, char c = 0) : x(x), y(y), c(c) {}
  bool operator<(const P b) const { return x < b.x; }
};
int main() {
  P A[3];
  for (int i = 0; i < 3; i++) {
    int x, y;
    cin >> x >> y;
    if (x < y) swap(x, y);
    A[i] = P(x, y, 'A' + i);
  }
  sort(A, A + 3);
  int w = A[2].x;
  if (A[0].x == w && A[1].x == w && A[0].y + A[1].y + A[2].y == w) {
    cout << w << endl;
    for (int i = 0; i < 3; i++) {
      for (int j = 0; j < A[i].y; j++) {
        for (int k = 0; k < w; k++) {
          printf("%c", A[i].c);
        }
        printf("\n");
      }
    }
    return 0;
  }
  for (int t1 = 0; t1 < 2; t1++) {
    swap(A[0].x, A[0].y);
    for (int t2 = 0; t2 < 2; t2++) {
      swap(A[1].x, A[1].y);
      if (A[0].x + A[1].x == w && A[0].y == A[1].y && A[0].y + A[2].y == w) {
        printf("%d\n", w);
        for (int i = 0; i < A[2].y; i++) {
          for (int j = 0; j < w; j++) {
            printf("%c", A[2].c);
          }
          printf("\n");
        }
        for (int i = 0; i < A[0].y; i++) {
          for (int j = 0; j < A[0].x; j++) {
            printf("%c", A[0].c);
          }
          for (int j = 0; j < A[1].x; j++) {
            printf("%c", A[1].c);
          }
          printf("\n");
        }
        return 0;
      }
    }
  }
  puts("-1");
  return 0;
}
