#include <bits/stdc++.h>
using namespace std;
int k, x, n, m;
long long d1[53];
long long d2[53];
long long d12[53];
long long d21[53];
long long d22[53];
char str1[128];
char str2[128];
int main() {
  scanf("%d%d%d%d", &k, &x, &n, &m);
  d1[1] = 1;
  d2[2] = 1;
  for (int i = 3; i <= k; i++) {
    d1[i] = d1[i - 2] + d1[i - 1];
    d2[i] = d2[i - 2] + d2[i - 1];
    d12[i] = d12[i - 2] + d12[i - 1];
    d21[i] = d21[i - 2] + d21[i - 1];
    d22[i] = d22[i - 2] + d22[i - 1];
    if (i % 2 == 0) {
      d21[i]++;
    } else {
      if (i >= 5) {
        d22[i]++;
      } else {
        d12[i]++;
      }
    }
  }
  memset(str1, 'Z', sizeof(str1));
  memset(str2, 'Z', sizeof(str2));
  for (int use12 = 0; use12 < 2; use12++) {
    for (int use21 = 0; use21 < 2; use21++) {
      for (int use22 = 0; use22 < 2; use22++) {
        for (int onecnt = 0; onecnt * 2 <= n; onecnt++) {
          for (int twocnt = 0; twocnt * 2 <= m; twocnt++) {
            long long curSum = 0;
            if (use12) curSum += d12[k];
            if (use21) curSum += d21[k];
            if (use22) curSum += d22[k];
            curSum += onecnt * d1[k];
            curSum += twocnt * d2[k];
            if (curSum != x) continue;
            str1[0] = str2[0] = str1[n - 1] = str2[m - 1] = 'Z';
            str1[n] = '\0';
            str2[m] = '\0';
            if (use12) {
              str1[n - 1] = 'A';
              str2[0] = 'C';
            }
            if (use21) {
              str2[m - 1] = 'A';
              str1[0] = 'C';
            }
            if (use22) {
              str2[m - 1] = 'A';
              str2[0] = 'C';
            }
            int realUse12 = str1[n - 1] == 'A' && str2[0] == 'C';
            int realUse21 = str2[m - 1] == 'A' && str1[0] == 'C';
            int realUse22 = str2[m - 1] == 'A' && str2[0] == 'C';
            if (realUse12 != use12) continue;
            if (realUse21 != use21) continue;
            if (realUse22 != use22) continue;
            int b1 = 0, b2 = 0;
            int l1 = n - 1, l2 = m - 1;
            if (str1[0] != 'Z') b1++;
            if (str2[0] != 'Z') b2++;
            if (str1[l1] != 'Z') l1--;
            if (str2[l2] != 'Z') l2--;
            if (max(0, l1 - b1 + 1) < onecnt * 2) {
              continue;
            }
            if (max(0, l2 - b2 + 1) < twocnt * 2) {
              continue;
            }
            for (int j = 0; j < onecnt; j++) {
              str1[j * 2 + b1] = 'A';
              str1[j * 2 + b1 + 1] = 'C';
            }
            for (int j = 0; j < twocnt; j++) {
              str2[j * 2 + b2] = 'A';
              str2[j * 2 + b2 + 1] = 'C';
            }
            printf("%s\n%s\n", str1, str2);
            return 0;
          }
        }
      }
    }
  }
  puts("Happy new year!");
  return 0;
}
