#include <bits/stdc++.h>
using namespace std;
const double pi = acos(-1);
struct pii {
  char s1;
  char s2;
  int s;
  int slx;
};
pii f[55];
string ss = "ABC";
int n, m, k, x;
string make(int l, int x1, int x2, int sl) {
  if (sl > l / 2) return "";
  string c = "";
  if (l == 2 && x1 == 0 && x2 == 2 && sl == 1) return "AC";
  if (l == 1 && x1 != x2) return ("");
  if (sl == 0) {
    if (l == 2 && ss[x1] == 'A' && ss[x2] == 'C') return ("");
    c = c + ss[x1];
    for (int i = 1; i <= l - 2; i++) c = c + "B";
    if (l > 1) c = c + ss[x2];
    return c;
  }
  c = c + ss[x1];
  if (c[0] == 'A')
    c = c + 'C';
  else
    c = c + "AC";
  for (int i = 1; i <= sl - 1; i++) c = c + "AC";
  if ((int)c.size() > l) return "";
  if ((int)c.size() == l) {
    if (c[l - 1] == ss[x2])
      return c;
    else
      return "";
  }
  while ((int)c.size() < l - 1) c = c + "B";
  c = c + ss[x2];
  return c;
}
bool check(int n1, int n2, int sl1, int m1, int m2) {
  f[1].s1 = ss[n1];
  f[1].s2 = ss[n2];
  f[1].s = sl1;
  f[1].slx = 0;
  f[2].s1 = ss[m1];
  f[2].s2 = ss[m2];
  f[2].s = 0;
  f[2].slx = 1;
  for (int i = 3; i <= k; i++) {
    f[i].s1 = f[i - 2].s1;
    f[i].s2 = f[i - 1].s2;
    f[i].s = f[i - 2].s + f[i - 1].s;
    f[i].slx = f[i - 1].slx + f[i - 2].slx;
    if (f[i - 2].s2 == 'A' && f[i - 1].s1 == 'C') f[i].s++;
    if (f[i].s > x) return false;
  }
  return ((f[k].s <= x) && ((x - f[k].s) % f[k].slx == 0));
}
int main() {
  scanf("%d%d%d%d", &k, &x, &n, &m);
  for (int i = 0; i <= 2; i++)
    for (int j = 0; j <= 2; j++)
      for (int sl1 = 0; sl1 <= n / 2; sl1++)
        if (make(n, i, j, sl1) != "")
          for (int ii = 0; ii <= 2; ii++)
            for (int jj = 0; jj <= 2; jj++)
              if (check(i, j, sl1, ii, jj) &&
                  make(m, ii, jj, (x - f[k].s) / f[k].slx) != "") {
                cout << make(n, i, j, sl1) << endl;
                cout << make(m, ii, jj, (x - f[k].s) / f[k].slx);
                return 0;
              }
  cout << "Happy new year!";
  return 0;
}
