#include <bits/stdc++.h>
using namespace std;
long long int n, m, s, k, INF = 1000000000000;
long long int last;
long long int f[55];
void check(pair<long long int, long long int> first,
           pair<long long int, long long int> second) {
  long long int cost = 0, i;
  pair<long long int, long long int> z;
  f[1] = 0;
  f[2] = 0;
  for (i = 3; i <= k; i++) {
    f[i] = f[i - 2] + f[i - 1];
    if (f[i] > s) {
      f[k] = INF;
      break;
    }
    if (first.second == 1 && second.first == 2) f[i]++;
    z = pair<long long int, long long int>(first.first, second.second);
    swap(first, second);
    swap(second, z);
  }
  last = s - f[k];
  return;
}
bool make(long long int type, pair<long long int, long long int> z,
          long long int len) {
  long long int first = z.first, i, cost = 0;
  if (type == 0) {
    if (n == 1) {
      if (len > 0) return false;
      return true;
    }
    if (n == 2) {
      if (z.first == 1 && z.second == 2) {
        if (len == 1) return true;
        return false;
      } else {
        if (len != 0) return false;
        return true;
      }
    }
    for (i = 2; i < n; i++) {
      if (cost == len) {
        first = 3;
        continue;
      }
      if (first == 1) {
        cost++;
        first = 2;
      } else
        first = 1;
    }
    if (first == 1 && z.second == 2) cost++;
  } else {
    if (m == 1) {
      if (len > 0) return false;
      return true;
    }
    if (m == 2) {
      if (z.first == 1 && z.second == 2) {
        if (len == 1) return true;
        return false;
      } else {
        if (len != 0) return false;
        return true;
      }
    }
    for (i = 2; i < m; i++) {
      if (cost == len) {
        first = 3;
        continue;
      }
      if (first == 1) {
        cost++;
        first = 2;
      } else
        first = 1;
    }
    if (first == 1 && z.second == 2) cost++;
  }
  if (cost == len) return true;
  return false;
}
void pri(long long int type, pair<long long int, long long int> z,
         long long int len) {
  long long int first = z.first, i, cost = 0;
  if (type == 0) {
    if (n == 1) {
      if (first == 1) printf("A\n");
      if (first == 2) printf("C\n");
      if (first == 3) printf("B\n");
      return;
    }
    if (first == 1) printf("A");
    if (first == 2) printf("C");
    if (first == 3) printf("B");
    for (i = 2; i < n; i++) {
      if (cost == len) {
        printf("B");
        continue;
      }
      if (first == 1) {
        cost++;
        first = 2;
        printf("C");
      } else {
        printf("A");
        first = 1;
      }
    }
    if (z.second == 1) printf("A");
    if (z.second == 2) printf("C");
    if (z.second == 3) printf("B");
  } else {
    if (m == 1) {
      if (first == 1) printf("A\n");
      if (first == 2) printf("C\n");
      if (first == 3) printf("B\n");
      return;
    }
    if (first == 1) printf("A");
    if (first == 2) printf("C");
    if (first == 3) printf("B");
    for (i = 2; i < m; i++) {
      if (cost == len) {
        printf("B");
        continue;
      }
      if (first == 1) {
        cost++;
        first = 2;
        printf("C");
      } else {
        printf("A");
        first = 1;
      }
    }
    if (z.second == 1) printf("A");
    if (z.second == 2) printf("C");
    if (z.second == 3) printf("B");
  }
  printf("\n");
  return;
}
int main() {
  long long int i1, j1, i2, j2, len1, len2, i;
  cin >> k >> s >> n >> m;
  for (i1 = 1; i1 <= 3; i1++) {
    for (j1 = 1; j1 <= 3; j1++) {
      if (n == 1 && i1 != j1) continue;
      for (i2 = 1; i2 <= 3; i2++) {
        for (j2 = 1; j2 <= 3; j2++) {
          if (m == 1 && i2 != j2) continue;
          check(pair<long long int, long long int>(i1, j1),
                pair<long long int, long long int>(i2, j2));
          if (last < 0) continue;
          for (len1 = 0; len1 <= n; len1++) {
            if (make(0, pair<long long int, long long int>(i1, j1), len1) ==
                false)
              continue;
            for (len2 = 0; len2 <= m; len2++) {
              if (make(1, pair<long long int, long long int>(i2, j2), len2) ==
                  false)
                continue;
              f[1] = len1;
              f[2] = len2;
              for (i = 3; i <= k; i++) f[i] = f[i - 1] + f[i - 2];
              if (f[k] == last) {
                pri(0, pair<long long int, long long int>(i1, j1), len1);
                pri(1, pair<long long int, long long int>(i2, j2), len2);
                return 0;
              }
            }
          }
        }
      }
    }
  }
  printf("Happy new year!\n");
  return 0;
}
