#include <bits/stdc++.h>
using namespace std;
const int maxn = 100;
char c[maxn][maxn], emp;
vector<char> v, u;
int xbest, ybest, n, m;
char toc(int x) {
  if (x == 65) return 'A';
  if (x == 66) return 'B';
  if (x == 67) return 'C';
  if (x == 68) return 'D';
  if (x == 69) return 'E';
  if (x == 70) return 'F';
}
char minpos(int x, int y) {
  v = u;
  if (c[x][y] != emp) return '0';
  if (x != 0) v.push_back(c[x - 1][y]);
  if (x != n - 1) v.push_back(c[x + 1][y]);
  if (y != 0) v.push_back(c[x][y - 1]);
  if (y != m - 1) v.push_back(c[x][y + 1]);
  for (int i = 65; i < 91; i++) {
    char cr = toc(i);
    bool flag = false;
    for (int j = 0; j < v.size(); j++) {
      if (v[j] == cr) flag = true;
    }
    if (!flag) return cr;
  }
}
void make(int x0, int x1, int y0, int y1, char s) {
  for (int i = x0; i <= x1; i++)
    for (int j = y0; j <= y1; j++) c[i][j] = s;
}
void best() {
  xbest = ybest = -1;
  bool flag = false;
  for (int i = 0; i < n && !flag; i++)
    for (int j = 0; j < m && !flag; j++)
      if (c[i][j] == emp) flag = true, xbest = i, ybest = j;
}
int main() {
  cin >> n >> m;
  bool finished = false;
  while (!finished) {
    best();
    int x = xbest, y = ybest;
    if (x == -1 && y == -1)
      finished = true;
    else {
      char s = minpos(x, y);
      if (x == n - 1 && y == m - 1) {
        finished = true;
        c[x][y] = s;
      } else if ((x == n - 1 && y != m - 1) || (x != n - 1 && y == m - 1))
        c[x][y] = s;
      else {
        int andis1 = x, andis2 = y;
        bool flag = false;
        for (int i = x + 1; i < n && !flag; i++) {
          if (minpos(i, y) <= s)
            andis1++;
          else
            flag = true;
        }
        flag = false;
        for (int i = y + 1; i < m && !flag; i++) {
          if (minpos(x, i) == s)
            andis2++;
          else
            flag = true;
        }
        int q1 = andis1 - x;
        int q2 = andis2 - y;
        q1 = min(q1, q2);
        make(x, x + q1, y, y + q1, s);
      }
    }
  }
  for (int i = 0; i < n; i++) {
    for (int j = 0; j < m; j++) cout << c[i][j];
    cout << endl;
  }
  return 0;
}
