#include <bits/stdc++.h>
using namespace std;
int k, x, n, m;
string gao(int mask, int num, int len) {
  string s(len, 'B');
  int st = 0, end = len;
  if (mask & 1) s[len - 1] = 'A', end--;
  if (mask & 2) s[0] = 'C', st++;
  char ch[2] = {'A', 'C'};
  int c = 0;
  for (int i = st; i < end; i++) {
    if (num == 0) {
      return s;
    }
    s[i] = ch[c];
    c ^= 1;
    if (s[i] == 'C') num--;
  }
  if (num) return "";
  return s;
}
string ans1, ans2;
bool check(vector<pair<int, long long> > v, long long x) {
  for (int i = 3; i < v.size(); i++) {
    pair<int, long long> a = v[i - 2], b = v[i - 1];
    int ns = (a.first & 2) + (b.first & 1);
    long long nv = a.second + b.second;
    if ((a.first & 1) && (b.first & 2)) nv++;
    v[i] = pair<int, long long>(ns, nv);
    if (nv == x && i == k) return 1;
    if (nv > x) return 0;
  }
  return 0;
}
int main() {
  while (cin >> k >> x >> n >> m) {
    bool ok = 0;
    for (int s1 = 0; s1 < 4; s1++) {
      if (n == 1 && (s1 == 3)) continue;
      for (int s2 = 0; s2 < 4; s2++) {
        if (m == 1 && (s2 == 3)) continue;
        for (int i = 0; i <= n / 2; i++) {
          ans1 = gao(s1, i, n);
          if (ans1 == "") break;
          for (int j = 0; j <= m / 2; j++) {
            ans2 = gao(s2, j, m);
            if (ans2 == "") break;
            vector<pair<int, long long> > v(k + 1);
            v[1] = pair<int, long long>(s1, i);
            v[2] = pair<int, long long>(s2, j);
            if (check(v, x)) {
              ok = 1;
              goto end;
            }
          }
        }
      }
    }
  end:
    if (ok == 1)
      cout << ans1 << endl << ans2 << endl;
    else
      cout << "Happy new year!\n";
  }
  return 0;
}
