#include <bits/stdc++.h>
using namespace std;
char grid[100][100];
int N, M;
string alpha = "ABCD";
void solve(int a, int b) {
  if (grid[a][b] != '.') return;
  int x = min(N - a, M - b);
  for (int i = 0; i < x; i++)
    if (grid[a][b + i] != '.') x = i;
  set<char> s(alpha.begin(), alpha.end());
  if (a > 0) s.erase(grid[a - 1][b]);
  if (a < N - 1) s.erase(grid[a + 1][b]);
  if (b > 0) s.erase(grid[a][b - 1]);
  if (b < M - 1) s.erase(grid[a][b + 1]);
  char c = *s.begin();
  if (c >= 'C' || (c >= 'B' && a == 0 && b != 0))
    grid[a][b] = c;
  else {
    for (int i = 0; i < x; i++) {
      if (a > 0 && grid[a - 1][b + i] == c) x = i;
      if (a < N - 1 && grid[a + 1][b + i] == c) x = i;
      if (b > 0 && grid[a + i][b - 1] == c) x = i;
      if (b < M - 1 && grid[a + i][b + 1] == c) x = i;
    }
    for (int i = 0; i < x; i++)
      for (int j = 0; j < x; j++) grid[a + i][b + j] = c;
  }
}
int main() {
  cin >> N >> M;
  for (int i = 0; i < N; i++)
    for (int j = 0; j < M; j++) grid[i][j] = '.';
  for (int i = 0; i < N; i++) {
    for (int j = 0; j < M; j++) {
      solve(i, j);
      cout << grid[i][j];
    }
    cout << endl;
  }
  return 0;
}
