#include using namespace std; using ll = long long; using ull = unsigned long long; using ld = long double; using pii = pair; using pll = pair; using vll = vector; const ll INF = LLONG_MAX / 4; bool chmin(auto& a, const auto& b) { return a > b ? a = b, 1 : 0; } bool chmax(auto& a, const auto& b) { return a < b ? a = b, 1 : 0; } auto sz(const auto& a) { return ssize(a); } #define OVERLOAD_REP(a, b, c, d, name, ...) name #define rep(...) OVERLOAD_REP(__VA_ARGS__, REP3, REP2, REP1, REP0)(__VA_ARGS__) #define REP0(x) for (ll _rep_counter = 0; _rep_counter < (x); ++_rep_counter) #define REP1(i, x) for (ll i = 0; (i) < (x); ++(i)) #define REP2(i, l, r) for (ll i = (l); (i) < (r); ++(i)) #define REP3(i, l, r, c) for (ll i = (l); ((c) > 0 ? (i) < (r) : (i) > (r)); i += (c)) #define each(x,a) for (auto&& x : a) #define MOD 998244353 #define ll0 ((ll)0) void solve() { ll n; cin >> n; if(n <= 2) { cout << -1 << endl; return; } if(n == 3) { cout << "AAAAAA" << endl; cout << "ABBBBA" << endl; cout << "ABBBBA" << endl; cout << "ABBBBA" << endl; cout << "ABBBAA" << endl; cout << "ABBBAA" << endl; return; } vector v(2*n, vll(2*n, 0)); ll a = 0; ll b = 0; rep(i, 2 * n) { rep(j, 2 * n) { if(i == 0 && j <= 1) { v[i][j] = 1; b++; } else if(i == 0) { // s += 'A'; a++; } else if(j == 0 || j == 2*n-1) { // s += 'A'; a++; } else if(i < 2*n-2) { v[i][j] = 1; b++; } else { // s += 'A'; a++; } } } ll ss = (b-a)/2; rep(i, 2*n-3, 1, -1) rep(j, 2*n-2, 1, -1) { if(ss < 1) break; v[i][j] = 0; ss--; } rep(i, 2*n) { string s = ""; rep(j, 2*n) { s += "AB"[v[i][j]]; } cout << s << endl; } } int main() { cin.tie(nullptr); ios_base::sync_with_stdio(false); solve(); }