#include <bits/stdc++.h>
using namespace std;
char myt[105][105];
void myfill(int xs, int ys, int xe, int ye, char c) {
  for (int i = xs; i <= xe; i++) {
    for (int j = ys; j <= ye; j++) {
      myt[i][j] = c;
    }
  }
}
int main() {
  int a, b, c, d;
  cin >> a >> b >> c >> d;
  a--, b--, c--, d--;
  myfill(0, 0, 24, 24, 'A');
  myfill(0, 25, 24, 49, 'B');
  myfill(25, 0, 49, 24, 'C');
  myfill(25, 25, 49, 49, 'D');
  for (int i = 0; i <= 24; i++) {
    for (int j = 0; j <= 24; j++) {
      if (i % 2 && j % 2 && b) {
        myt[i][j] = 'B';
        b--;
      }
    }
  }
  for (int i = 0; i <= 24; i++) {
    for (int j = 25; j <= 49; j++) {
      if (i % 2 == 0 && j % 2 == 0 && a) {
        myt[i][j] = 'A';
        a--;
      }
    }
  }
  for (int i = 25; i <= 49; i++) {
    for (int j = 0; j <= 24; j++) {
      if (i % 2 && j % 2 && d) {
        myt[i][j] = 'D';
        d--;
      }
    }
  }
  for (int i = 25; i <= 49; i++) {
    for (int j = 25; j <= 49; j++) {
      if (i % 2 == 0 && j % 2 == 0 && c) {
        myt[i][j] = 'C';
        c--;
      }
    }
  }
  cout << "50 50" << endl;
  for (int i = 0; i < 50; i++) {
    for (int j = 0; j < 50; j++) cout << myt[i][j];
    cout << endl;
  }
  return 0;
}
