#include <bits/stdc++.h>
using namespace std;
int xx[4] = {0, 0, 1, -1};
int yy[4] = {1, -1, 0, 0};
int n, m;
int d;
char a[int(1e3)][int(1e3)];
int f[int(1e3)][int(1e3)];
char def;
bool color(int x, int y, char c) {
  if (x - 1 >= 1 && c == a[x - 1][y]) return false;
  if (y + 1 <= m && c == a[x][y + 1]) return false;
  if (c != a[x - 1][y] && c != a[x][y - 1]) {
    a[x][y] = c;
    return true;
  }
  int d = f[x][y - 1];
  d++;
  int y1 = y - d + 1;
  int x1 = x;
  if (x1 + d - 1 <= n) {
    for (int i = (x1), _b = (x1 + d - 1); i <= _b; i++)
      for (int j = (y1), _b = (y1 + d - 1); j <= _b; j++) a[i][j] = c;
    return true;
  } else
    return false;
}
void solve() {
  for (int i = (1), _b = (n); i <= _b; i++) {
    for (int j = (1), _b = (m); j <= _b; j++) {
      if (a[i][j] == def) {
        for (int c = ('A'), _b = ('Z'); c <= _b; c++)
          if (color(i, j, c)) {
            break;
          }
      }
      if (j != 1 && a[i][j] == a[i][j - 1])
        f[i][j] = f[i][j - 1] + 1;
      else
        f[i][j] = 1;
    }
  }
}
int main() {
  scanf("%d%d", &n, &m);
  def = a[0][0];
  solve();
  for (int i = (1), _b = (n); i <= _b; i++) {
    for (int j = (1), _b = (m); j <= _b; j++) printf("%c", a[i][j]);
    printf("\n");
  }
}
