#include <bits/stdc++.h>
using namespace std;
char s[110][110];
const int dir[4][2] = {{1, 0}, {0, 1}, {-1, 0}, {0, -1}};
int n, m;
inline int get(int x, int y) {
  bool flag[5];
  memset(flag, 0, sizeof(flag));
  for (int i = 0; i < 4; i++) {
    int nx = x + dir[i][0], ny = y + dir[i][1];
    if (nx >= 1 && nx <= n && ny >= 1 && ny <= m && s[nx][ny])
      flag[s[nx][ny] - 'A'] = 1;
  }
  for (int i = 0; i < 5; i++) {
    if (!flag[i]) return i;
  }
  return 19260817;
}
inline void paint(int x, int y) {
  if (y == m + 1) {
    y = 1;
    x++;
  }
  if (x > n) return;
  if (s[x][y]) {
    paint(x, y + 1);
    return;
  }
  int sign = get(x, y);
  int p = 1;
  while (x + p <= n && y + p <= m && !s[x][y + p]) {
    if (get(x, y + p) != sign) break;
    p++;
  }
  for (int i = x; i < x + p; i++) {
    for (int j = y; j < y + p; j++) {
      s[i][j] = sign + 'A';
    }
  }
  paint(x, y + 1);
}
int main() {
  scanf("%d%d", &n, &m);
  paint(1, 1);
  for (int i = 1; i <= n; i++) puts(s[i] + 1);
  return 0;
}
