#include <bits/stdc++.h>
int a, b, c, d;
char map[100][100];
int main() {
  scanf("%d%d%d%d", &a, &b, &c, &d);
  int n = 0, m = 50;
  int x;
  x = b - 1;
  n++;
  for (int i = 1; i <= m; i++) map[n][i] = 'A';
  while (x) {
    int i = 1;
    n++;
    while (i < m && x) map[n][i] = 'B', map[n][i + 1] = 'A', i += 2, x--;
    if (x == 0)
      while (i <= m) map[n][i] = 'A', i++;
    n++;
    for (i = 1; i <= m; i++) map[n][i] = 'A';
  }
  x = d - 1;
  n++;
  for (int i = 1; i <= m; i++) map[n][i] = 'C';
  while (x) {
    int i = 1;
    n++;
    while (i < m && x) map[n][i] = 'D', map[n][i + 1] = 'C', i += 2, x--;
    if (x == 0)
      while (i <= m) map[n][i] = 'C', i++;
    n++;
    for (i = 1; i <= m; i++) map[n][i] = 'C';
  }
  x = a - 1;
  n++;
  for (int i = 1; i <= m; i++) map[n][i] = 'B';
  while (x) {
    int i = 1;
    n++;
    while (i < m && x) map[n][i] = 'A', map[n][i + 1] = 'B', i += 2, x--;
    if (x == 0)
      while (i <= m) map[n][i] = 'B', i++;
    n++;
    for (i = 1; i <= m; i++) map[n][i] = 'B';
  }
  x = c - 1;
  n++;
  for (int i = 1; i <= m; i++) map[n][i] = 'D';
  while (x) {
    int i = 1;
    n++;
    while (i < m && x) map[n][i] = 'C', map[n][i + 1] = 'D', i += 2, x--;
    if (x == 0)
      while (i <= m) map[n][i] = 'D', i++;
    n++;
    for (i = 1; i <= m; i++) map[n][i] = 'D';
  }
  printf("%d %d\n", n, m);
  for (int i = 1; i <= n; i++) puts(map[i] + 1);
  return 0;
}
