#include <bits/stdc++.h>
using namespace std;
template <class T>
inline T max(T a, T b, T c) {
  return max(a, max(b, c));
}
template <class T>
inline T min(T a, T b, T c) {
  return min(a, min(b, c));
}
template <class T>
void debug(T a, T b) {
  for (; a != b; ++a) cerr << *a << ' ';
  cerr << endl;
}
template <class T>
T gcd(T a, T b) {
  return (b == (T)0 ? a : gcd(b, a % b));
}
template <class T>
T lcm(T a, T b) {
  return a / gcd(a, b) * b;
}
template <class T>
T mathround(T x) {
  long long i64x = (long long)x;
  if (x < i64x + 0.5) return (T)i64x;
  return (T)i64x + 1;
}
template <class T>
bool isprime(T x) {
  int till = (T)sqrt(x + .0);
  if (x <= 1) return 0;
  if (x == 2) return 1;
  if (x % 2 == 0) return 0;
  for (int i = 3; i <= till; i += 2)
    if (x % i == 0) return 0;
  return 1;
}
int k;
long long x;
int n;
int m;
long long r[100][5];
char pos[3] = {'A', 'X', 'C'};
int main() {
  cin >> k;
  cin >> x;
  cin >> n;
  cin >> m;
  r[0][0] = 1;
  r[0][1] = 0;
  r[0][2] = 0;
  r[0][3] = 0;
  r[0][4] = 0;
  r[1][0] = 0;
  r[1][1] = 1;
  r[1][2] = 0;
  r[1][3] = 0;
  r[1][4] = 0;
  r[2][0] = 1;
  r[2][1] = 1;
  r[2][2] = 0;
  r[2][3] = 0;
  r[2][4] = 1;
  for (int i = 3; i <= 50; i++) {
    r[i][0] = r[i - 1][0] + r[i - 2][0];
    r[i][1] = r[i - 1][1] + r[i - 2][1];
    r[i][2] = r[i - 1][2] + r[i - 2][2] + (i % 2 == 1);
    r[i][3] = r[i - 1][3] + r[i - 2][3] + (i % 2 == 0);
    r[i][4] = r[i - 1][4] + r[i - 2][4];
  }
  k--;
  char A[n + 1];
  fill(A, A + n, 'X');
  A[n] = '\0';
  char B[m + 1];
  fill(B, B + m, 'X');
  B[m] = '\0';
  for (int a = 0; a <= 50; a++) {
    for (int b = 0; b <= 50; b++) {
      for (int birbas = 0; birbas < 3; birbas++) {
        for (int birson = 0; birson < 3; birson++) {
          for (int ikibas = 0; ikibas < 3; ikibas++) {
            for (int ikison = 0; ikison < 3; ikison++) {
              fill(A, A + n, 'X');
              fill(B, B + m, 'X');
              A[0] = pos[birbas];
              A[n - 1] = pos[birson];
              B[0] = pos[ikibas];
              B[m - 1] = pos[ikison];
              if (A[0] != pos[birbas] || A[n - 1] != pos[birson] ||
                  B[0] != pos[ikibas] || B[m - 1] != pos[ikison])
                continue;
              long long san = 0;
              san += r[k][0] * a;
              san += r[k][1] * b;
              san += r[k][2] * (B[m - 1] == 'A' && A[0] == 'C');
              san += r[k][3] * (B[m - 1] == 'A' && B[0] == 'C');
              san += r[k][4] * (A[n - 1] == 'A' && B[0] == 'C');
              if (san == x) {
                int rem;
                rem = a;
                for (int i = 0; i < n && rem > 0; i++) {
                  if (A[i] != 'X') continue;
                  char trans = 'A';
                  if (i > 0 && A[i - 1] == 'A') trans = 'C';
                  rem -= (trans == 'C');
                  A[i] = trans;
                }
                if (rem > 0) continue;
                rem = b;
                for (int i = 0; i < m && rem > 0; i++) {
                  if (B[i] != 'X') continue;
                  char trans = 'A';
                  if (i > 0 && B[i - 1] == 'A') trans = 'C';
                  rem -= (trans == 'C');
                  B[i] = trans;
                }
                if (rem > 0) continue;
                long long san2 = 0;
                san2 += r[k][0] * a;
                san2 += r[k][1] * b;
                san2 += r[k][2] * (B[m - 1] == 'A' && A[0] == 'C');
                san2 += r[k][3] * (B[m - 1] == 'A' && B[0] == 'C');
                san2 += r[k][4] * (A[n - 1] == 'A' && B[0] == 'C');
                if (san2 != x) continue;
                int cnt;
                cnt = 0;
                for (int i = 1; i < n; i++)
                  cnt += (A[i - 1] == 'A' && A[i] == 'C');
                if (cnt != a) continue;
                cnt = 0;
                for (int i = 1; i < m; i++)
                  cnt += (B[i - 1] == 'A' && B[i] == 'C');
                if (cnt != b) continue;
                cout << A << "\n";
                cout << B << "\n";
                return 0;
              }
            }
          }
        }
      }
    }
  }
  cout << "Happy new year!";
  return EXIT_SUCCESS;
}
