#include <bits/stdc++.h>
#pragma comment(linker, "/STACK:51200000,51200000")
using namespace std;
const int maxn = 100005;
int main() {
  int da[7], db[7], id[7];
  for (int i = (0); i < (3); i++) {
    scanf("%d%d", &da[i], &db[i]);
    id[i] = i;
    if (da[i] < db[i]) swap(da[i], db[i]);
  }
  int mmax = 0;
  for (int i = (0); i < (3); i++)
    if (da[i] > da[mmax]) mmax = i;
  swap(da[mmax], da[0]);
  swap(db[mmax], db[0]);
  swap(id[0], id[mmax]);
  if (da[1] == da[2] && da[1] == da[0]) {
    if (db[0] + db[1] + db[2] == da[0]) {
      printf("%d\n", da[0]);
      for (int k = (0); k < (3); k++)
        for (int i = (0); i < (db[k]); i++) {
          for (int j = (0); j < (da[0]); j++) putchar('A' + id[k]);
          puts("");
        }
    } else
      puts("-1");
    return 0;
  }
  if (db[1] != da[0] - db[0]) swap(da[1], db[1]);
  if (db[2] != da[0] - db[0]) swap(da[2], db[2]);
  int flag = 1;
  if (!(db[1] == db[2] && db[1] == da[0] - db[0])) flag = 0;
  if (da[1] + da[2] != da[0]) flag = 0;
  if (!flag) {
    puts("-1");
    return 0;
  }
  printf("%d\n", da[0]);
  for (int i = (0); i < (db[0]); i++) {
    for (int j = (0); j < (da[0]); j++) putchar('A' + id[0]);
    puts("");
  }
  for (int i = (0); i < (da[0] - db[0]); i++) {
    for (int j = (0); j < (da[1]); j++) putchar('A' + id[1]);
    for (int j = (0); j < (da[2]); j++) putchar('A' + id[2]);
    puts("");
  }
  return 0;
}
