#include <bits/stdc++.h>   const double EPS = 1e-24;   const long long int MOD = 1000000007ll;   const long long int MOD1 = 1000000009ll;   const long long int MOD2 = 1100000009ll;   const double PI = 3.14159265359;   int INF = 2147483645;   long long int INFINF = 9223372036854775807;   template <class T>   T Max2(T a, T b) {     return a < b ? b : a;   }   template <class T>   T Min2(T a, T b) {     return a < b ? a : b;   }   template <class T>   T Max3(T a, T b, T c) {     return Max2(Max2(a, b), c);   }   template <class T>   T Min3(T a, T b, T c) {     return Min2(Min2(a, b), c);   }   template <class T>   T Max4(T a, T b, T c, T d) {     return Max2(Max2(a, b), Max2(c, d));   }   template <class T>   T Min4(T a, T b, T c, T d) {     return Min2(Min2(a, b), Min2(c, d));   }   using namespace std;   int bit_count(long long int _x) {     int _ret = 0;     while (_x) {       if (_x % 2 == 1) _ret++;       _x /= 2;     }     return _ret;   }   int bit(long long int _mask, long long int _i) {     return (_mask & (1 << _i)) == 0 ? 0 : 1;   }   long long int powermod(long long int _a, long long int _b, long long int _m) {     long long int _r = 1;     while (_b) {       if (_b % 2 == 1) _r = (_r * _a) % _m;       _b /= 2;       _a = (_a * _a) % _m;     }     return _r;   }   int x[5], y[5];   bool issquare[30010];   int sz, sz2;   char s[110][110];   char c[5];   void type2(int a1, int a2, int b1, int b2, int c1, int c2, int i1, int i2,              int i3) {     for (int i = 1; i <= a1; i++)       for (int j = 1; j <= a2; j++) s[i][j] = c[i1];     for (int i = a1 + 1; i <= a1 + b1; i++)       for (int j = 1; j <= b2; j++) s[i][j] = c[i2];     for (int i = 1; i <= c1; i++)       for (int j = a2 + 1; j <= a2 + c2; j++) s[i][j] = c[i3];   }   void print() {     cout << sz <<   n ;     for (int i = 1; i <= sz; i++) {       for (int j = 1; j <= sz; j++) cout << s[i][j];       cout <<   n ;     }   }   int main() {     std::ios::sync_with_stdio(false);     srand(time(NULL));     for (int i = 1; i <= 3; i++) cin >> x[i] >> y[i];     c[1] =  A ;     c[2] =  B ;     c[3] =  C ;     for (int i = 2; i * i <= 30010; i++) issquare[i * i] = true;     sz2 = 0;     for (int i = 1; i <= 3; i++) sz2 += x[i] * y[i];     if (!issquare[sz2]) {       cout <<  -1 ;       return 0;     }     for (int i = 2; i * i <= 30010; i++) {       if (i * i == sz2) {         sz = i;         break;       }     }     for (int i = 1; i <= 3; i++)       if (x[i] > y[i]) swap(x[i], y[i]);     if (y[1] == sz && y[2] == sz && y[3] == sz && x[1] + x[2] + x[3] == sz) {       cout << sz <<   n ;       for (int i = 1; i <= x[1]; i++) {         for (int j = 1; j <= y[1]; j++) cout <<  A ;         cout <<   n ;       }       for (int i = 1; i <= x[2]; i++) {         for (int j = 1; j <= y[2]; j++) cout <<  B ;         cout <<   n ;       }       for (int i = 1; i <= x[3]; i++) {         for (int j = 1; j <= y[3]; j++) cout <<  C ;         cout <<   n ;       }       return 0;     }     for (int i = 1; i <= 3; i++)       for (int j = 1; j <= 3; j++)         for (int k = 1; k <= 3; k++) {           if (i == j || j == k || i == k) continue;           if (x[j] + x[k] == sz && y[j] == y[k]) {             if (x[i] == sz && y[i] == sz - y[j]) {               type2(x[j], y[j], x[k], y[k], x[i], y[i], j, k, i);               print();               return 0;             }             if (y[i] == sz && x[i] == sz - y[j]) {               type2(x[j], y[j], x[k], y[k], y[i], x[i], j, k, i);               print();               return 0;             }           } else if (x[j] + y[k] == sz && y[j] == x[k]) {             if (x[i] == sz && y[i] == sz - y[j]) {               type2(x[j], y[j], y[k], x[k], x[i], y[i], j, k, i);               print();               return 0;             }             if (y[i] == sz && x[i] == sz - y[j]) {               type2(x[j], y[j], y[k], x[k], y[i], x[i], j, k, i);               print();               return 0;             }           } else if (y[j] + x[k] == sz && x[j] == y[k]) {             if (x[i] == sz && y[i] == sz - x[j]) {               type2(y[j], x[j], x[k], y[k], x[i], y[i], j, k, i);               print();               return 0;             }             if (y[i] == sz && x[i] == sz - x[j]) {               type2(y[j], x[j], x[k], y[k], y[i], x[i], j, k, i);               print();               return 0;             }           } else if (y[j] + y[k] == sz && x[j] == x[k]) {             if (x[i] == sz && y[i] == sz - x[j]) {               type2(y[j], x[j], y[k], x[k], x[i], y[i], j, k, i);               print();               return 0;             }             if (y[i] == sz && x[i] == sz - x[j]) {               type2(y[j], x[j], y[k], x[k], y[i], x[i], j, k, i);               print();               return 0;             }           }         }     cout <<  -1 ;     return 0;   }