#include <bits/stdc++.h>
using namespace std;
string getchr(int cd) { return (cd == 0 ? "B" : cd == 1 ? "A" : "C"); }
char getchrc(int cd) { return (cd == 0 ? 'B' : cd == 1 ? 'A' : 'C'); }
string canstr(int len, int cnt, int ms) {
  int c1 = ms % 3, c2 = ms / 3;
  if (len == 1) {
    if (c1 == c2) {
      if (c1 == 0) return "B";
      if (c1 == 1) return "A";
      return "C";
    }
    return "";
  } else if (len == 2) {
    if (c1 == 1 && c2 == 2 && cnt == 0) return "";
    if (cnt == 0) {
      string ret = getchr(c1) + getchr(c2);
      return ret;
    }
    if (cnt == 1 && c1 == 1 && c2 == 2) return "AC";
    return "";
  } else {
    string second;
    for (int i = 1; i <= len; ++i) second += " ";
    second[0] = getchrc(c1);
    second[len - 1] = getchrc(c2);
    if (cnt && second[0] == 'A') {
      second[1] = 'C';
      --cnt;
    }
    if (cnt && second[len - 1] == 'C') {
      second[len - 2] = 'A';
      --cnt;
    }
    for (int i = 1; i < len && cnt;)
      if (second[i] != ' ' || second[i + 1] != ' ')
        ++i;
      else {
        second[i] = 'A';
        second[i + 1] = 'C';
        i += 2;
        --cnt;
      }
    for (int i = 0; i < len; ++i)
      if (second[i] == ' ') second[i] = 'B';
    if (cnt == 0) return second;
    return "";
  }
  return "";
}
struct strinfo {
  long long cnt;
  int ms;
  strinfo() {}
  strinfo(long long cntt, int mss) {
    cnt = cntt;
    ms = mss;
  }
};
bool countAC(int i, int ms1, int j, int ms2, int k, int x) {
  strinfo a[55];
  a[1] = strinfo(i, ms1);
  a[2] = strinfo(j, ms2);
  for (int p = 3; p <= k; ++p) {
    long long ncnt = a[p - 2].cnt + a[p - 1].cnt +
                     ((a[p - 2].ms / 3 == 1) && (a[p - 1].ms % 3 == 2));
    int nms = (a[p - 2].ms % 3) + 3 * (a[p - 1].ms / 3);
    a[p] = strinfo(ncnt, nms);
    if (ncnt > x) return false;
  }
  return a[k].cnt == x;
}
int k, x, n, m;
int main() {
  cin >> k >> x >> n >> m;
  for (int i = 0; i <= n / 2; ++i)
    for (int ms1 = 0; ms1 < 9; ++ms1)
      if (canstr(n, i, ms1).size())
        for (int j = 0; j <= m / 2; ++j)
          for (int ms2 = 0; ms2 < 9; ++ms2)
            if (canstr(m, j, ms2).size()) {
              bool found = countAC(i, ms1, j, ms2, k, x);
              if (found) {
                cout << canstr(n, i, ms1) << endl;
                cout << canstr(m, j, ms2) << endl;
                return 0;
              }
            }
  cout << "Happy new year!";
  return 0;
}
