#include <bits/stdc++.h>
using namespace std;
const int maxn = ((int)5e2) + 5;
vector<string> str;
vector<vector<long long int>> C(64 + 1, vector<long long int>(64 + 1));
char arr[200][200];
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(0);
  cout.tie(0);
  int n, m;
  fill(&arr[0][0], &arr[0][0] + 200 * 200, 0);
  cin >> n >> m;
  set<pair<int, int>> q;
  for (int i = 0; i < n; i++)
    for (int j = 0; j < m; j++) {
      q.insert(make_pair(i + 1, j + 1));
    }
  while (!q.empty()) {
    int x = q.begin()->first;
    int y = q.begin()->second;
    q.erase(q.begin());
    set<char> alpha;
    for (int i = 0; i < 26; i++) alpha.insert('A' + i);
    alpha.erase(arr[x][y - 1]);
    alpha.erase(arr[x - 1][y]);
    if (arr[x][y + 1] != 0) {
      alpha.erase(arr[x][y + 1]);
    }
    char put = *alpha.begin();
    int sz = 1;
    for (int size = 2; size < min(m + 1, n + 1); size++) {
      for (int i = 0; i < 26; i++) alpha.insert('A' + i);
      int col = y + size - 1;
      int row = x;
      int finalRow = x + size - 1;
      if (arr[row][col] != 0) break;
      alpha.erase(arr[row][col - 1]);
      alpha.erase(arr[row - 1][col]);
      if (arr[row][col + 1] != 0) {
        alpha.erase(arr[row][col + 1]);
      }
      if (*alpha.begin() < put) {
        break;
      }
      if (*alpha.begin() > put) break;
      if (col > m || finalRow > n) break;
      sz++;
    }
    for (int i = x; i < x + sz; i++) {
      for (int j = y; j < y + sz; j++) {
        arr[i][j] = put;
        q.erase(make_pair(i, j));
      }
    }
  }
  for (int i = 1; i < n + 1; i++) {
    for (int j = 1; j < m + 1; j++) {
      cout << arr[i][j];
    }
    cout << endl;
  }
  return 0;
}
