#include <bits/stdc++.h>
const long long maxn = 2e4 + 10;
const long long maxm = 60;
using namespace std;
long long num[maxm][7], w[maxm], h[maxm], k, s, x, y, n, m, t1, t2, t3, flag;
char stra[501], strb[501];
long long check(long long need, long long xx, long long yy) {
  long long a[4] = {1, 1, 2, 0}, b[4] = {1, 1, 0, 2}, a1 = 0, a2 = 0, b1 = 0,
            b2 = 0;
  for (long long i = 0; i < (1 << 4); ++i) {
    x = xx, y = yy, a1 = 0, a2 = 0, b1 = 0, b2 = 0;
    long long flags = 1, nn = 0;
    for (long long j = 0; j < 4; ++j) {
      if (i & (1 << j)) {
        if (j == 0) {
          a2 = b1 = 1;
        }
        if (j == 1) {
          a1 = b2 = 1;
        }
        if (j == 2) {
          a1 = a2 = 1;
        }
        if (j == 3) {
          b1 = b2 = 1;
        }
      }
    }
    if (a1 + a2 > xx || b1 + b2 > yy) {
      continue;
    }
    if (a2 == 1 && b1 == 1) {
      nn += num[k][3];
    }
    if (a1 == 1 && b2 == 1) {
      nn += num[k][4];
    }
    if (a2 == 1 && a1 == 1) {
      nn += num[k][5];
    }
    if (b2 == 1 && b1 == 1) {
      nn += num[k][6];
    }
    if (nn == need) {
      t3 = i;
      return 1;
    }
  }
  return 0;
}
signed main() {
  scanf("%lld%lld%lld%lld", &k, &s, &n, &m);
  num[1][1] = num[2][2] = 1;
  w[1] = h[1] = 1, w[2] = h[2] = 2;
  for (long long i = 3; i <= 50; ++i) {
    for (long long j = 1; j <= 6; ++j) {
      num[i][j] = num[i - 2][j] + num[i - 1][j];
    }
    if (w[i - 2] == 1) {
      if (h[i - 1] == 1) {
        ++num[i][5];
      } else {
        ++num[i][3];
      }
    } else {
      if (h[i - 1] == 1) {
        ++num[i][4];
      } else {
        ++num[i][6];
      }
    }
    w[i] = w[i - 1], h[i] = h[i - 2];
  }
  for (long long i = 0; i * 2 <= n; ++i) {
    for (long long j = 0; j * 2 <= m; ++j) {
      t1 = i, t2 = j, t3 = 0;
      long long xx = num[k][1] * i, yy = num[k][2] * j;
      if (xx + yy > s) {
        flag = 0;
        break;
      }
      if (xx + yy == s) {
        flag = 1;
        break;
      }
      if (check(s - xx - yy, n - i * 2, m - j * 2)) {
        flag = 1;
        break;
      }
    }
    if (flag == 1) {
      break;
    }
  }
  if (flag != 1) {
    puts("Happy new year!");
    return 0;
  }
  long long i;
  for (i = 0; i < 201; ++i) {
    stra[i] = strb[i] = 'B';
  }
  for (i = 0; i <= 3; ++i) {
    if ((1 << i) & t3) {
      if (i == 0) {
        stra[n - 1] = 'A';
        strb[0] = 'C';
      }
      if (i == 1) {
        stra[0] = 'C';
        strb[m - 1] = 'A';
      }
      if (i == 2) {
        stra[0] = 'C';
        stra[n - 1] = 'A';
      }
      if (i == 3) {
        strb[0] = 'C';
        strb[m - 1] = 'A';
      }
    }
  }
  if (stra[0] == 'B') {
    i = 0;
  } else {
    i = 1;
  }
  for (long long j = 1; j <= t1; ++j) {
    stra[i] = 'A';
    stra[i + 1] = 'C';
    i += 2;
  }
  if (strb[0] == 'B') {
    i = 0;
  } else {
    i = 1;
  }
  for (long long j = 1; j <= t2; ++j) {
    strb[i] = 'A';
    strb[i + 1] = 'C';
    i += 2;
  }
  for (long long i = 0; i < n; ++i) {
    cout << stra[i];
  }
  puts("");
  for (long long i = 0; i < m; ++i) {
    cout << strb[i];
  }
  return 0;
}
