#include <bits/stdc++.h>
using namespace std;
struct elem {
  int le, num, ri;
  elem() {}
  elem(int inle, int innum, int inri) {
    le = inle;
    num = innum;
    ri = inri;
  }
};
elem operator+(elem e1, elem e2) {
  return elem(e1.le, e1.num + e2.num + (e1.ri and e2.le ? 1 : 0), e2.ri);
}
vector<elem> genera(int n) {
  vector<elem> v;
  for (int i = 0; i + i <= n; i++) v.push_back(elem(0, i, 0));
  for (int i = 0; i + i + 1 <= n; i++) {
    v.push_back(elem(0, i, 1));
    v.push_back(elem(1, i, 0));
  }
  for (int i = 0; i + i + 2 <= n; i++) v.push_back(elem(1, i, 1));
  return v;
}
bool puede(elem e1, elem e2, int k, int x) {
  for (int i = 3; i <= k; i++) {
    elem nexte1 = e2;
    elem nexte2 = e1 + e2;
    e1 = nexte1;
    e2 = nexte2;
    if (e2.num > x) return false;
  }
  return e2.num == x;
}
void escribe(elem e, int n) {
  if (e.le) cout << "C";
  for (int i = 0; i < e.num; i++) cout << "AC";
  for (int i = e.le + e.ri + 2 * e.num; i < n; i++) cout << "B";
  if (e.ri) cout << "A";
  cout << endl;
}
int main() {
  int k, x, n, m;
  cin >> k >> x >> n >> m;
  vector<elem> v1 = genera(n);
  vector<elem> v2 = genera(m);
  for (int i = 0; i < int(v1.size()); i++) {
    for (int j = 0; j < int(v2.size()); j++) {
      if (puede(v1[i], v2[j], k, x)) {
        escribe(v1[i], n);
        escribe(v2[j], m);
        exit(0);
      }
    }
  }
  cout << "Happy new year!" << endl;
}
