#include <bits/stdc++.h>
using namespace std;
const int N = 1e2 + 7;
char s[N][N];
int n, m;
char getch(int i, int j) {
  int ban[5];
  fill_n(ban, 5, 0);
  static const int g[3][2] = {{-1, 0}, {0, -1}, {0, 1}};
  for (int d = (0); d < (3); ++d) {
    char ch = s[i + g[d][0]][j + g[d][1]];
    if (ch == '#') continue;
    if (ch - 'A' > 4) continue;
    ban[ch - 'A'] = 1;
  }
  for (int i = (0); i < (5); ++i)
    if (!ban[i]) return 'A' + i;
}
int main() {
  scanf("%d%d", &n, &m);
  for (int i = (0); i < (n + 2); ++i)
    for (int j = (0); j < (m + 2); ++j) s[i][j] = '#';
  for (int i = (1); i < (n + 1); ++i)
    for (int j = (1); j < (m + 1); ++j)
      if (s[i][j] == '#') {
        s[i][j] = getch(i, j);
        int l = 1;
        while (j + l <= m && i + l <= n && s[i][j + l] == '#' &&
               getch(i, j + l) > s[i][j] && s[i - 1][j + l] != s[i][j] &&
               s[i + l][j - 1] != s[i][j]) {
          s[i][j + l] = s[i][j];
          l++;
        }
        for (int ii = (0); ii < (l); ++ii)
          for (int jj = (0); jj < (l); ++jj) s[i + ii][j + jj] = s[i][j];
      }
  for (int i = (1); i < (n + 1); ++i) {
    s[i][m + 1] = '\0';
    puts(s[i] + 1);
  }
  return 0;
}
