#include <bits/stdc++.h>
using namespace std;
const int maxN = 100 + 13;
int N, M;
int s[maxN][maxN];
void enlarge(int x, int y, int l) {
  int col = s[x][y];
  for (int i = x; i <= x + l; i++)
    for (int j = y; j <= y + l; j++) s[i][j] = col;
  return;
}
void paint(int x, int y) {
  int col = 0;
  for (int i = 1; i <= 26; i++) {
    if (i != s[x - 1][y] && i != s[x][y - 1] && i != s[x][y + 1]) {
      col = i;
      break;
    }
  }
  s[x][y] = col;
  int r = M;
  for (int i = y + 1; i <= M; i++) {
    if (s[x][i] == col || s[x - 1][i] == col) {
      r = i - 1;
      break;
    }
    if (s[x][i]) {
      r = i - 1;
      break;
    }
    bool flag(false);
    for (int j = 1; j < col; j++) {
      if (j != s[x - 1][i]) {
        flag = true;
        r = i - 1;
        break;
      }
    }
    if (flag) break;
  }
  r -= y;
  r = min(N - x, r);
  enlarge(x, y, r);
  return;
}
int main() {
  scanf("%d%d", &N, &M);
  for (int i = 0; i <= N; i++) s[i][0] = 30;
  for (int i = 0; i <= M; i++) s[0][i] = 30;
  for (int i = 1; i <= N; i++)
    for (int j = 1; j <= M; j++)
      if (s[i][j] == 0) paint(i, j);
  for (int i = 1; i <= N; i++) {
    for (int j = 1; j <= M; j++) cout << (char)(s[i][j] - 1 + 'A');
    cout << endl;
  }
  return 0;
}
