#include <bits/stdc++.h>
#pragma comment(linker, "/STACK:267386880")
using namespace std;
long long hm[55][3][3];
pair<int, int> sf[55];
bool ok;
void precalc() {
  sf[1] = make_pair(1, 1);
  sf[2] = make_pair(2, 2);
  hm[1][0][1] = 1;
  hm[2][0][2] = 1;
  for (int i(3); i <= (50); ++i) {
    hm[i][0][1] = hm[i - 1][0][1] + hm[i - 1][0][1];
    hm[i][0][2] = hm[i - 1][0][2] + hm[i - 1][0][2];
    sf[i] = make_pair(sf[i - 2].first, sf[i - 1].second);
    for (int j(0); j <= ((long long)(3) - 1); ++j)
      for (int q(0); q <= ((long long)(3) - 1); ++q)
        hm[i][j][q] = hm[i - 1][j][q] + hm[i - 2][j][q];
    hm[i][sf[i - 2].second][sf[i - 1].first]++;
  }
}
void putC(string &s, const char &c, int pos) {
  if (s[pos] != c && s[pos] != 'X') ok = false;
  s[pos] = c;
}
void getAns(int n, int m, int nAC, int mAC, int t11, int t12, int t21,
            int t22) {
  ok = true;
  string nS, mS;
  for (int i(0); i <= ((long long)(n)-1); ++i) nS += "X";
  for (int i(0); i <= ((long long)(m)-1); ++i) mS += "X";
  if (t11) {
    putC(nS, 'C', 0);
    putC(nS, 'A', n - 1);
  }
  if (t12) {
    putC(nS, 'A', n - 1);
    putC(mS, 'C', 0);
  }
  if (t21) {
    putC(mS, 'A', m - 1);
    putC(nS, 'C', 0);
  }
  if (t22) {
    putC(mS, 'C', 0);
    putC(mS, 'A', m - 1);
  }
  if (!t11 && nS[0] == 'C' && nS[n - 1] == 'A') return;
  if (!t12 && nS[n - 1] == 'A' && mS[0] == 'C') return;
  if (!t21 && mS[m - 1] == 'A' && nS[0] == 'C') return;
  if (!t22 && mS[0] == 'C' && mS[m - 1] == 'A') return;
  for (int i(0); i <= ((long long)(n - 1) - 1); ++i) {
    if (nAC > 0 && nS[i] == 'X' && nS[i + 1] == 'X')
      putC(nS, 'A', i), putC(nS, 'C', i + 1), nAC--;
  }
  for (int i(0); i <= ((long long)(m - 1) - 1); ++i) {
    if (mAC > 0 && mS[i] == 'X' && mS[i + 1] == 'X')
      putC(mS, 'A', i), putC(mS, 'C', i + 1), mAC--;
  }
  if (nAC == 0 && mAC == 0 && ok) {
    cout << nS << endl;
    cout << mS << endl;
    exit(0);
  }
}
void solve() {
  precalc();
  int k, x, n, m;
  scanf("%d%d%d%d", &k, &x, &n, &m);
  for (int nAC(0); nAC <= ((long long)(51) - 1); ++nAC)
    for (int mAC(0); mAC <= ((long long)(51) - 1); ++mAC)
      for (int t11(0); t11 <= ((long long)(2) - 1); ++t11)
        for (int t12(0); t12 <= ((long long)(2) - 1); ++t12)
          for (int t21(0); t21 <= ((long long)(2) - 1); ++t21)
            for (int t22(0); t22 <= ((long long)(2) - 1); ++t22) {
              long long res(nAC * 1ll * hm[k][0][1]);
              res += mAC * 1ll * hm[k][0][2];
              res += t11 * 1ll * hm[k][1][1];
              res += t12 * 1ll * hm[k][1][2];
              res += t21 * 1ll * hm[k][2][1];
              res += t22 * 1ll * hm[k][2][2];
              if (res == x) {
                getAns(n, m, nAC, mAC, t11, t12, t21, t22);
              }
            }
  puts("Happy new year!");
}
void bruteforce() {}
int main() {
  solve();
  bruteforce();
  return 0;
}
