#include <bits/stdc++.h>
using namespace std;
struct cosa {
  int words;
  int next[26];
};
struct cost {
  int a, b, c, d;
};
struct q {
  int a;
  string b;
};
int aa1[10] = {-1, 1, 0, 0};
int aa2[10] = {0, 0, -1, 1};
int alfa, beta;
char buffer[10];
long long int gcd(long long int a, long long int b) {
  return b == 0 ? a : gcd(b, a % b);
}
bool operator<(const cost &a, const cost &b) { return a.a < b.a; }
string k;
string vac, resulta;
char respuesta[60][60];
int main() {
  ios_base::sync_with_stdio(0);
  int z, mal = 2000000000, s = 2000000000, a1 = 0, b1 = 0, c1, x1, y1,
         t = -2000000000, res = 0, e = -1, f;
  long long int a, b, c, d, x, y = 0;
  srand(time(NULL));
  cin >> a >> b >> c >> d;
  x = 0;
  b--;
  for (int i = int(0); i < int(50); i++) {
    respuesta[x][i] = 'B';
  }
  x++;
  y = 0;
  z = 0;
  while (a > 1) {
    z = 1;
    if (y >= 50) {
      x++;
      for (int i = int(0); i < int(50); i++) {
        respuesta[x][i] = 'B';
      }
      x++;
      y = 0;
    } else {
      a--;
      respuesta[x][y] = 'A';
      respuesta[x][y + 1] = 'B';
      y += 2;
    }
  }
  if (z == 1) {
    while (y != 50) {
      respuesta[x][y] = 'B';
      y++;
    }
    x++;
    for (int i = int(0); i < int(50); i++) {
      respuesta[x][i] = 'B';
    }
    x++;
  }
  c--;
  for (int i = int(0); i < int(50); i++) {
    respuesta[x][i] = 'C';
  }
  x++;
  y = 0;
  z = 0;
  while (b > 0) {
    z = 1;
    if (y >= 50) {
      x++;
      for (int i = int(0); i < int(50); i++) {
        respuesta[x][i] = 'C';
      }
      x++;
      y = 0;
    } else {
      b--;
      respuesta[x][y] = 'B';
      respuesta[x][y + 1] = 'C';
      y += 2;
    }
  }
  if (z == 1) {
    while (y != 50) {
      respuesta[x][y] = 'C';
      y++;
    }
    x++;
    for (int i = int(0); i < int(50); i++) {
      respuesta[x][i] = 'C';
    }
    x++;
  }
  d--;
  for (int i = int(0); i < int(50); i++) {
    respuesta[x][i] = 'D';
  }
  x++;
  y = 0;
  z = 0;
  while (c > 0) {
    z = 1;
    if (y >= 50) {
      x++;
      for (int i = int(0); i < int(50); i++) {
        respuesta[x][i] = 'D';
      }
      x++;
      y = 0;
    } else {
      c--;
      respuesta[x][y] = 'C';
      respuesta[x][y + 1] = 'D';
      y += 2;
    }
  }
  if (z == 1) {
    while (y != 50) {
      respuesta[x][y] = 'D';
      y++;
    }
    x++;
    for (int i = int(0); i < int(50); i++) {
      respuesta[x][i] = 'D';
    }
    x++;
  }
  a--;
  for (int i = int(0); i < int(50); i++) {
    respuesta[x][i] = 'A';
  }
  x++;
  y = 0;
  z = 0;
  while (d > 0) {
    z = 1;
    if (y >= 50) {
      x++;
      for (int i = int(0); i < int(50); i++) {
        respuesta[x][i] = 'A';
      }
      x++;
      y = 0;
    } else {
      d--;
      respuesta[x][y] = 'D';
      respuesta[x][y + 1] = 'A';
      y += 2;
    }
  }
  if (z == 1) {
    while (y != 50) {
      respuesta[x][y] = 'A';
      y++;
    }
    x++;
    for (int i = int(0); i < int(50); i++) {
      respuesta[x][i] = 'A';
    }
    x++;
  }
  if (a != 0) {
    for (int i = int(0); i < int(50); i++) {
      respuesta[x][i] = 'A';
    }
    x++;
  }
  if (b != 0) {
    for (int i = int(0); i < int(50); i++) {
      respuesta[x][i] = 'B';
    }
    x++;
  }
  if (c != 0) {
    for (int i = int(0); i < int(50); i++) {
      respuesta[x][i] = 'C';
    }
    x++;
  }
  cout << x << " " << 50 << endl;
  for (int i = int(0); i < int(x); i++) {
    for (int j = int(0); j < int(50); j++) {
      cout << respuesta[i][j];
    }
    cout << endl;
  }
}
