#include <bits/stdc++.h>
using namespace std;
const int intINF = 1000000000;
const long long LLINF = (long long)1e18;
string out = "ABCD";
int pos[4] = {0, 1, 2, 3};
char outer[55][55];
int datas[5];
int main() {
  int mini = 105, chs = 0;
  for (int a = 0; a < 4; a++) {
    scanf("%d", &datas[a]);
    if (datas[a] < mini) {
      mini = datas[a];
      chs = a;
    }
  }
  char tr = out[chs];
  for (int a = 0; a < 50; a++) {
    for (int b = 0; b < 50; b++) {
      if ((a + b) % 2 == 0)
        outer[a][b] = tr;
      else
        outer[a][b] = '.';
    }
  }
  int maxy = -1, maxx = -1;
  for (int z = 1; z < 50; z += 2) {
    bool check2 = 0;
    for (int b = z; b >= 0; b--) {
      if (datas[chs] <= 0) break;
      if (outer[(z - b)][b] == '.') {
        bool check = 0;
        for (int a = 0; a < 4; a++) {
          if (a == chs) continue;
          if (datas[a] > 0) {
            outer[(z - b)][b] = out[a];
            datas[a]--;
            check = 1;
            check2 = 1;
            break;
          }
        }
        if (!check) break;
        maxy = max(maxy, (z - b));
        if (b != 0) datas[chs]--;
      }
    }
    if (!check2) break;
    maxx = max(maxx, z);
  }
  for (int a = 0; a < 50; a += 2) {
    bool check2 = 0;
    for (int b = 1; b < 50; b += 2) {
      if (a > 0 && outer[a - 1][b - 1] != '.') continue;
      if (outer[a][b] == '.') {
        bool check = 0;
        for (int z = 0; z < 4; z++) {
          if (datas[z] > 0) {
            outer[a][b] = out[z];
            datas[z]--;
            check = 1;
            check2 = 1;
            break;
          }
        }
        if (!check) break;
        maxx = max(maxx, b);
      }
    }
    if (!check2) break;
    maxy = max(a, maxy);
  }
  for (int a = 0; a <= maxy + 1; a++) {
    for (int b = 0; b <= maxx; b++) {
      if (outer[a][b] == '.') outer[a][b] = tr;
    }
  }
  printf("%d %d\n", maxy + 2, maxx + 1);
  for (int a = 0; a <= maxy + 1; a++) {
    for (int b = 0; b <= maxx; b++) {
      printf("%c", outer[a][b]);
    }
    printf("\n");
  }
  return 0;
}
