#include <bits/stdc++.h>
using namespace std;
struct pq {
  int st, ed;
  long long tot_ac;
  int f;
  pq() {}
  pq(int i, int j, long long k) { st = i, ed = j, tot_ac = k, f = 0; }
};
pq fib[100];
pq find_sol(pq a, pq b) {
  if (a.ed != -1 && b.ed != -1) {
    if (a.ed == 1 && b.st == 2)
      return pq(a.st, b.ed, a.tot_ac + b.tot_ac + 1);
    else
      return pq(a.st, b.ed, a.tot_ac + b.tot_ac);
  }
  if (a.ed == -1 && b.ed != -1) {
    if (a.st == 1 && b.st == 2)
      return pq(a.st, b.ed, a.tot_ac + b.tot_ac + 1);
    else
      return pq(a.st, b.ed, a.tot_ac + b.tot_ac);
  }
  if (a.ed != -1 && b.ed == -1) {
    if (a.ed == 1 && b.st == 2)
      return pq(a.st, b.st, a.tot_ac + b.tot_ac + 1);
    else
      return pq(a.st, b.st, a.tot_ac + b.tot_ac);
  }
  if (a.ed == -1 && b.ed == -1) {
    if (a.st == 1 && b.st == 2)
      return pq(a.st, b.st, a.tot_ac + b.tot_ac + 1);
    else
      return pq(a.st, b.st, a.tot_ac + b.tot_ac);
  }
  return pq(0, 0, 0);
}
bool calc(int k, long long x) {
  for (int i = 3; i <= k; i++) {
    fib[i] = find_sol(fib[i - 2], fib[i - 1]);
  }
  if (fib[k].tot_ac == x) return true;
  return false;
}
string make_string(pq a, int len) {
  string ret = "";
  if (a.tot_ac * 2 == len && len > 2) {
    for (int i = 0; i < a.tot_ac; i++) ret += "AC";
    return ret;
  } else if (len - a.tot_ac * 2 == 1 && len > 2) {
    for (int i = 0; i < a.tot_ac; i++) ret += "AC";
    if (a.f == 1) {
      if (a.st == 0)
        ret = "Z" + ret;
      else if (a.st == 1)
        ret = "A" + ret;
      else
        ret = "C" + ret;
    } else {
      if (a.st == 0)
        ret = ret + "Z";
      else if (a.ed == 1)
        ret = ret + "A";
      else
        ret = ret + "C";
    }
    return ret;
  }
  if (a.ed == -1) {
    if (a.st == 0)
      ret += "Z";
    else if (a.st == 1)
      ret += "A";
    else
      ret += "C";
  } else {
    if (a.st == 0)
      ret += "Z";
    else if (a.st == 1)
      ret += "A";
    else
      ret += "C";
    for (int i = 0; i < a.tot_ac && len > 2; i++) ret += "AC";
    if (((int)ret.size()) < len - 1) {
      ret += string(len - ((int)ret.size()) - 1, 'B');
    }
    if (a.ed == 0)
      ret += "Z";
    else if (a.ed == 1)
      ret += "A";
    else
      ret += "C";
  }
  return ret;
}
int main() {
  int kk, x, n, m;
  while (cin >> kk >> x >> n >> m) {
    int rem1 = n / 2;
    int rem2 = m / 2;
    string s1, s2;
    bool good = 1;
    for (int i = 0; i <= rem1 && good; i++)
      for (int j = 0; j <= rem2 && good; j++) {
        for (int k = 0; k <= 2 && good; k++) {
          for (int l = 0; l <= 2 && good; l++) {
            fib[1] = pq(k, l, i);
            if (n == 1)
              fib[1].ed = -1;
            else if (n - (i * 2) == 1) {
              if (k == 0)
                continue;
              else if (k == 1) {
                if (l == 0)
                  fib[1].st = 0, fib[1].ed = 2;
                else if (l == 1)
                  fib[1].st = 1, fib[1].ed = 2;
                else
                  fib[1].st = 2, fib[1].ed = 2;
                fib[1].f = 1;
              } else {
                if (l == 0)
                  fib[1].st = 1, fib[1].ed = 0;
                else if (l == 1)
                  fib[1].st = 1, fib[1].ed = 1;
                else
                  fib[1].st = 1, fib[1].ed = 2;
                fib[1].f = 2;
              }
            } else if (n == (i * 2))
              fib[1] = pq(1, 2, i);
            for (int ii = 0; ii <= 2 && good; ii++)
              for (int jj = 0; jj <= 2 && good; jj++) {
                fib[2] = pq(ii, jj, j);
                if (m == 1)
                  fib[2].ed = -1;
                else if (m - (j * 2) == 1) {
                  if (ii == 0)
                    continue;
                  else if (ii == 1) {
                    if (jj == 0)
                      fib[2].st = 0, fib[2].ed = 2;
                    else if (jj == 1)
                      fib[2].st = 1, fib[2].ed = 2;
                    else
                      fib[2].st = 2, fib[2].ed = 2;
                    fib[2].f = 1;
                  } else {
                    if (jj == 0)
                      fib[2].st = 1, fib[2].ed = 0;
                    else if (jj == 1)
                      fib[2].st = 1, fib[2].ed = 1;
                    else
                      fib[2].st = 1, fib[2].ed = 2;
                    fib[2].f = 2;
                  }
                } else if (m == (j * 2)) {
                  fib[2] = pq(1, 2, j);
                }
                if (calc(kk, x)) {
                  good = 0;
                  s1 = make_string(fib[1], n);
                  s2 = make_string(fib[2], m);
                }
              }
          }
        }
      }
    if (!good) {
      cout << s1 << endl;
      cout << s2 << endl;
    } else
      cout << "Happy new year!" << endl;
  }
}
