#include <bits/stdc++.h>
const int N = 110;
using namespace std;
int ans[2][N];
int n, m, K, a[60][2];
long long yh, f[60];
void PRT(int num, int len) {
  if (num == 0) {
    for (int i = 1; i <= len; i++) printf("Z");
    return;
  }
  for (int i = 1; i <= num; i++) printf("AC");
  for (int i = num * 2 + 1; i <= len; i++) printf("Z");
}
void PRIN(int x, int len) {
  for (int i = 1; i <= len; i++) {
    if (ans[x][i] == -1) printf("Z");
    if (ans[x][i] == 0) printf("A");
    if (ans[x][i] == 1) printf("C");
  }
  if (x == 0) printf("\n");
}
void CAN(int A, int B, int num, int len, int pos) {
  ans[pos][1] = A;
  ans[pos][len] = B;
  if (num == 0) {
    PRIN(pos, len);
    return;
  }
  if (len == 2) {
    PRIN(pos, len);
    return;
  }
  if (A == 0 && (B == 0 || B == -1)) {
    int now = 0;
    for (int i = 1; i <= num; i++)
      ans[pos][now + 1] = 0, ans[pos][now + 2] = 1, now += 2;
  }
  if (A == 0 && B == 1) {
    ans[pos][len - 1] = 0;
    int now = 0;
    for (int i = 1; i <= num - 1; i++)
      ans[pos][now + 1] = 0, ans[pos][now + 2] = 1, now += 2;
  }
  if ((A == 1 || A == -1) && (B == 0 || B == -1)) {
    int now = 1;
    for (int i = 1; i <= num; i++)
      ans[pos][now + 1] = 0, ans[pos][now + 2] = 1, now += 2;
  }
  if ((A == 1 || A == -1) && B == 1) {
    int now = 1;
    for (int i = 1; i <= num; i++)
      ans[pos][now + 1] = 0, ans[pos][now + 2] = 1, now += 2;
  }
  PRIN(pos, len);
}
int WAI(int A, int B, int num, int len, int pos) {
  if (len == 1) {
    if (A != B || num != 0)
      return 0;
    else
      return 1;
  }
  if (num == 0) {
    if (A == 0 && B == 1 && len == 2)
      return 0;
    else
      return 1;
  }
  if (A == 0 && (B == -1 || B == 0) && num * 2 > len - 1) return 0;
  if (A == 0 && B == 1 && num * 2 > len) return 0;
  if ((A == 1 || A == -1) && (B == 0 || B == -1) && num * 2 > len - 2) return 0;
  if ((A == 1 || A == -1) && B == 1 && num * 2 > len - 1) return 0;
  return 1;
}
int CHK(int x, int y) {
  for (int i = -1; i <= 1; i++)
    for (int j = -1; j <= 1; j++) {
      if (!WAI(i, j, x, n, 0)) continue;
      for (int k = -1; k <= 1; k++)
        for (int l = -1; l <= 1; l++) {
          if (!WAI(k, l, y, m, 1)) continue;
          f[1] = x;
          f[2] = y;
          a[1][0] = i;
          a[1][1] = j;
          a[2][0] = k;
          a[2][1] = l;
          f[K] = -1;
          for (int now = 3; now <= K; now++) {
            f[now] = f[now - 1] + f[now - 2];
            if (a[now - 2][1] == 0 && a[now - 1][0] == 1) f[now]++;
            if (f[now] > yh) break;
            a[now][0] = a[now - 2][0];
            a[now][1] = a[now - 1][1];
          }
          if (f[K] != yh) continue;
          CAN(i, j, x, n, 0);
          CAN(k, l, y, m, 1);
          return 1;
        }
    }
  return 0;
}
int main() {
  scanf("%d%lld%d%d", &K, &yh, &n, &m);
  for (int i = 0; i <= n; i++) ans[0][i] = -1;
  for (int i = 0; i <= m; i++) ans[1][i] = -1;
  for (int i = 0; i <= n / 2; i++) {
    for (int j = 0; j <= m / 2; j++) {
      if (CHK(i, j)) return 0;
    }
  }
  printf("Happy new year!");
  return 0;
}
