#include <bits/stdc++.h>
using namespace std;
inline int scn() {
  int hg;
  scanf("%d", &hg);
  return hg;
};
inline long long llsc() {
  long long hg;
  scanf("%I64d", &hg);
  return hg;
};
const int INF = 1000 * 1000 * 1000 * 2;
const int MOD = 1000 * 1000 * 1000 + 7;
const long double PI = acos((long double)-1.0);
const int N = 1000 * 1000 * 1000 + 6;
char r[50][50];
pair<int, char> a[4];
int main() {
  ios_base::sync_with_stdio(false);
  cin >> a[0].first >> a[1].first >> a[2].first >> a[3].first;
  a[0].second = 'a';
  a[1].second = 'b';
  a[2].second = 'c';
  a[3].second = 'd';
  sort(a, a + 4);
  a[0].first--;
  int p;
  cout << 50 << " " << 50 << endl;
  int i;
  for (i = 0; 1; i++) {
    int j;
    for (j = 0; j < 50; j++) {
      if (!a[0].first) break;
      if (i % 2 == j % 2) {
        r[i][j] = a[0].second;
        a[0].first--;
      } else {
        r[i][j] = a[1].second;
        a[1].first--;
      }
    }
    if (!a[0].first) {
      for (; j < 50; j++) {
        r[i][j] = a[2].second;
      }
      for (j = 0; j < 50; j++) {
        r[i + 1][j] = a[2].second;
      }
      a[2].first--;
      p = i + 1;
      break;
    }
  }
  for (i += 2; i < 50; i++) {
    for (int j = 0; j < 50; j++) {
      if (j % 2 == 1 && i % 2 == p % 2) {
        if (a[1].first) {
          r[i][j] = a[1].second;
          a[1].first--;
        } else if (a[2].first) {
          r[i][j] = a[2].second;
          a[2].first--;
        } else if (a[3].first) {
          r[i][j] = a[3].second;
          a[3].first--;
        } else {
          r[i][j] = a[0].second;
        }
      } else {
        r[i][j] = a[0].second;
      }
    }
  }
  for (i = 0; i < 50; i++) {
    for (int j = 0; j < 50; j++) {
      cout << r[i][j];
    }
    cout << endl;
  }
  return 0;
}
