#include <bits/stdc++.h>
using namespace std;
const int N = 50, M = 50;
int a, b, c, d;
char s[N + 1][M + 1];
int main() {
  scanf("%d%d%d%d", &a, &b, &c, &d);
  for (int i = 1; i <= N / 2; ++i)
    for (int j = 1; j <= M / 2; ++j) s[i][j] = 'A';
  for (int i = 1; i <= N / 2; ++i)
    for (int j = M / 2 + 1; j <= M; ++j) s[i][j] = 'B';
  for (int i = N / 2 + 1; i <= N; ++i)
    for (int j = 1; j <= M / 2; ++j) s[i][j] = 'C';
  for (int i = N / 2 + 1; i <= N; ++i)
    for (int j = M / 2 + 1; j <= M; ++j) s[i][j] = 'D';
  a--, b--, c--, d--;
  for (int i = 1; i < N / 2; i += 2)
    for (int j = 1; j < M / 2; j += 2) {
      if (b) {
        s[i][j] = 'B';
        b--;
        continue;
      }
      if (c) {
        s[i][j] = 'C';
        c--;
        continue;
      }
      if (d) {
        s[i][j] = 'D';
        d--;
        continue;
      }
    }
  for (int i = 1; i < N / 2; i += 2)
    for (int j = M / 2 + 2; j <= M; j += 2) {
      if (a) {
        s[i][j] = 'A';
        a--;
        continue;
      }
      if (c) {
        s[i][j] = 'C';
        c--;
        continue;
      }
      if (d) {
        s[i][j] = 'D';
        d--;
        continue;
      }
    }
  for (int i = N / 2 + 2; i <= N; i += 2)
    for (int j = 1; j < M / 2; j += 2) {
      if (a) {
        s[i][j] = 'A';
        a--;
        continue;
      }
      if (b) {
        s[i][j] = 'B';
        b--;
        continue;
      }
      if (d) {
        s[i][j] = 'D';
        d--;
        continue;
      }
    }
  for (int i = N / 2 + 2; i <= N; i += 2)
    for (int j = M / 2 + 2; j <= M; j += 2) {
      if (a) {
        s[i][j] = 'A';
        a--;
        continue;
      }
      if (b) {
        s[i][j] = 'B';
        b--;
        continue;
      }
      if (c) {
        s[i][j] = 'C';
        c--;
        continue;
      }
    }
  printf("%d %d\n", N, M);
  for (int i = 1; i <= N; ++i) printf("%s\n", &(s[i][1]));
  return 0;
}
