#include <bits/stdc++.h>
using namespace std;
int a, b, c, d;
char s[55][55];
template <typename T>
inline T read() {
  T x = 0, w = 1;
  char c = getchar();
  while (c < '0' || c > '9') {
    if (c == '-') w = -1;
    c = getchar();
  }
  while (c >= '0' && c <= '9') x = x * 10 + c - '0', c = getchar();
  return x * w;
}
int main() {
  a = read<int>(), b = read<int>(), c = read<int>(), d = read<int>();
  a--, b--, c--, d--;
  for (int i = 1; i <= 25; i++)
    for (int j = 1; j <= 25; j++) s[i][j] = 'A';
  for (int i = 26; i <= 50; i++)
    for (int j = 1; j <= 25; j++) s[i][j] = 'B';
  for (int i = 1; i <= 25; i++)
    for (int j = 26; j <= 50; j++) s[i][j] = 'C';
  for (int i = 26; i <= 50; i++)
    for (int j = 26; j <= 50; j++) s[i][j] = 'D';
  for (int i = 1; i < 25; i += 2)
    for (int j = 1; j < 25; j += 2) {
      if (b)
        s[i][j] = 'B', b--;
      else if (c)
        s[i][j] = 'C', c--;
      else if (d)
        s[i][j] = 'D', d--;
    }
  for (int i = 1; i < 25; i += 2)
    for (int j = 27; j < 50; j += 2) {
      if (a)
        s[i][j] = 'A', a--;
      else if (b)
        s[i][j] = 'B', b--;
      else if (d)
        s[i][j] = 'D', d--;
    }
  for (int i = 27; i <= 50; i += 2)
    for (int j = 1; j < 25; j += 2) {
      if (a)
        s[i][j] = 'A', a--;
      else if (c)
        s[i][j] = 'C', c--;
      else if (d)
        s[i][j] = 'D', d--;
    }
  for (int i = 27; i <= 50; i += 2)
    for (int j = 27; j < 50; j += 2) {
      if (b)
        s[i][j] = 'B', b--;
      else if (c)
        s[i][j] = 'C', c--;
      else if (a)
        s[i][j] = 'A', a--;
    }
  printf("%d %d\n", 50, 50);
  for (int i = 1; i <= 50; i++) {
    for (int j = 1; j <= 50; j++) printf("%c", s[i][j]);
    puts("");
  }
  return 0;
}
