#include <bits/stdc++.h>
int min(int a, int b) {
  if (a < b) return a;
  return b;
}
int max(int a, int b) {
  if (a > b) return a;
  return b;
}
long long F[55];
long long G[55];
long long H[55];
long long I[55];
long long J[55];
void printResp(int a, int b, int c, int d, int e, int n, int m) {
  int i = 0;
  if (c) printf("C");
  for (i = 0; i < a; i++) printf("AC");
  for (i = 2 * a + c; i < n - d; i++) printf("X");
  if (d) printf("A");
  printf("\n");
  if (d || e) printf("C");
  for (i = 0; i < b; i++) printf("AC");
  for (i = 2 * b + max(d, e); i < m - max(c, e); i++) printf("X");
  if (c || e) printf("A");
  printf("\n");
}
int main() {
  int k, x, n, m;
  int i;
  int a, b, c, d, e;
  scanf("%d %d %d %d", &k, &x, &n, &m);
  F[1] = 1;
  F[2] = 0;
  G[1] = 0;
  G[2] = 1;
  H[1] = 0;
  H[2] = 0;
  I[1] = 0;
  I[2] = 0;
  I[3] = 1;
  J[1] = 0;
  J[2] = 0;
  J[3] = 0;
  for (i = 3; i <= k; i++) {
    F[i] = F[i - 2] + F[i - 1];
    G[i] = G[i - 2] + G[i - 1];
    if (i % 2) {
      H[i] = H[i - 2] + H[i - 1];
      if (i > 3) J[i] = J[i - 2] + J[i - 1] + 1;
    } else {
      H[i] = H[i - 2] + H[i - 1] + 1;
      if (i > 3) J[i] = J[i - 2] + J[i - 1];
    }
    if (i > 3) I[i] = I[i - 2] + I[i - 1];
  }
  for (a = 0; a <= n / 2; a++) {
    for (b = 0; b <= m / 2; b++) {
      for (c = 0; c <= 1; c++) {
        for (d = 0; d <= 1; d++) {
          for (e = 0; e <= 1; e++) {
            if ((F[k] * a + G[k] * b + H[k] * c + I[k] * d +
                     max(c * d, e) * J[k] ==
                 x) &&
                (2 * a + c + d <= n) && (2 * b + max(2 * e, c + d) <= m)) {
              printResp(a, b, c, d, e, n, m);
              return 0;
            }
          }
        }
      }
    }
  }
  printf("Happy new year!\n");
  return 0;
}
