#include <bits/stdc++.h>
using namespace std;
int can(int len, int ac, int stc, int fina) {
  len -= stc;
  len -= fina;
  len -= 2 * ac;
  return len >= 0;
}
const int maxlen = 100 + 10;
char str[maxlen];
void printStr(int len, int ac, int stc, int fina) {
  str[len] = 0;
  int pos = 0;
  if (stc) str[pos++] = 'C';
  for (int i = 0; i < ac; i++) {
    str[pos++] = 'A';
    str[pos++] = 'C';
  }
  while (pos < len) {
    str[pos++] = 'D';
  }
  if (fina) str[len - 1] = 'A';
  printf("%s\n", str);
}
const int maxn = 55;
long long dp[maxn], dpc[maxn], dpa[maxn];
int main() {
  int k, x, n, m;
  scanf("%d%d%d%d", &k, &x, &n, &m);
  k--;
  for (int a = 0; a * 2 <= n; a++)
    for (int b = 0; b * 2 <= m; b++)
      for (int ac = 0; ac <= 1; ac++)
        for (int aa = 0; aa <= 1; aa++)
          for (int bc = 0; bc <= 1; bc++)
            for (int ba = 0; ba <= 1; ba++) {
              if (!can(n, a, ac, aa) || !can(m, b, bc, ba)) continue;
              dp[0] = a;
              dpc[0] = ac;
              dpa[0] = aa;
              dp[1] = b;
              dpc[1] = bc;
              dpa[1] = ba;
              bool win = true;
              for (int i = 2; i <= k; i++) {
                dpc[i] = dpc[i - 2];
                dpa[i] = dpa[i - 1];
                dp[i] = dp[i - 2] + dp[i - 1] + dpa[i - 2] * dpc[i - 1];
                if (dp[i] > x) {
                  win = false;
                  break;
                }
              }
              if (!win) continue;
              if (dp[k] != x) continue;
              printStr(n, a, ac, aa);
              printStr(m, b, bc, ba);
              exit(0);
            }
  printf("Happy new year!");
  return 0;
}
