#include <bits/stdc++.h>
using namespace std;
int gcd(int a, int b) {
  return (b > a) ? gcd(b, a) : (b == 0) ? a : gcd(b, a % b);
}
int bitcount(int a) { return (a != 0) ? bitcount(a & (a - 1)) + 1 : 0; }
long long bigmod(long long num, long long pow, long long prime) {
  if (pow == 0ll) return 1ll;
  long long ans = bigmod(num, pow / 2ll, prime);
  ans = (ans * ans) % prime;
  if (pow % 2ll) ans = (ans * num) % prime;
  return ans;
}
char a[300][300];
int n, m;
bool Try(char z, int i, int j) {
  int len = 0;
  if (a[i][j + 1] == z) return 0;
  if (a[i - 1][j] == z) return 0;
  if (a[i][j - 1] == z) {
    for (int k = j - 1; k >= 1; k--) {
      if (a[i][k] != z) {
        break;
      }
      len++;
    }
    if (len + i <= n) {
      a[i][j] = z;
      for (int k = j; k >= j - len; k--) {
        a[len + i][k] = z;
      }
      for (int k = i; k <= i + len; k++) {
        a[k][j] = z;
      }
      return 1;
    } else
      return 0;
  }
  a[i][j] = z;
  return 1;
}
int main() {
  ios::sync_with_stdio(0);
  cin.tie(0);
  char z;
  cin >> n >> m;
  for (int i = 0; i <= n + 1; i++) {
    for (int j = 0; j <= m + 1; j++) {
      a[i][j] = '!';
    }
  }
  for (int i = 1; i <= n; i++) {
    for (int j = 1; j <= m; j++) {
      if (a[i][j] >= 'A' && a[i][j] <= 'Z') continue;
      for (int p = 'A'; p <= 'Z'; p++) {
        if (Try(p, i, j)) {
          break;
        }
      }
    }
  }
  for (int i = 1; i <= n; i++) {
    for (int j = 1; j <= m; j++) {
      cout << a[i][j];
    }
    cout << "\n";
  }
  return 0;
}
