#include <bits/stdc++.h>
using namespace std;
char a[102][102];
int n, m;
int i_can(int i, int j, int k, char c) {
  if (i + k - 1 > n || j + k - 1 > m) return 0;
  for (int t1 = i; t1 < i + k; ++t1) {
    for (int t2 = j; t2 < j + k; ++t2) {
      if (a[t1][t2]) return 0;
    }
  }
  for (int t1 = i; t1 < i + k; ++t1) {
    if (a[t1][j - 1] == c || a[t1][j + k] == c) return 0;
  }
  for (int t1 = j; t1 < j + k; ++t1) {
    if (a[i - 1][t1] == c || a[i + k][t1] == c) return 0;
  }
  return 1;
}
int main() {
  cin >> n >> m;
  memset(a, 0, 102 * 102 * sizeof(**a));
  for (int i = 1; i <= n; ++i) {
    for (int j = 1; j <= m; ++j) {
      if (a[i][j]) continue;
      char c = 'A';
      while (!i_can(i, j, 1, c)) {
        ++c;
      }
      char c1 = c - 1;
      int flag = 0;
      while (c1 >= 'A') {
        if (i_can(i, j + 1, 1, c1)) {
          a[i][j] = c;
          flag = 1;
        }
        --c1;
      }
      if (flag) continue;
      int k = 2;
      while (i_can(i, j, k, c)) {
        ++k;
      }
      for (int t1 = i; t1 < i + k - 1; ++t1) {
        for (int t2 = j; t2 < j + k - 1; ++t2) {
          a[t1][t2] = c;
        }
      }
    }
  }
  for (int i = 1; i <= n; ++i) {
    for (int j = 1; j <= m; ++j) {
      cout << a[i][j];
    }
    cout << endl;
  }
  return 0;
}
