// #pragma GCC target("avx2") #pragma GCC optimize("O3") // #pragma GCC optimize("unroll-loops") #include // #include // #include using namespace std; // using mint = atcoder::modint998244353; using P = pair; const int M = 998244353; const long long LM = 1LL << 60; int dd[] = { 0, 1, 0, -1 }; vector solve(int n) { n *= 2; if (n < 6) { return {}; } if (n == 6) { return { "AAAAAA", "AABBBA", "ABBBBA", "ABBBBA", "ABBBBA", "AABBBA", }; } if (n == 8) { return { "AAAAAAAA", "AAAAAAAA", "ABBBBBBA", "ABBBBBBA", "ABBBBBBA", "ABBBBBBA", "ABBBBBBB", "AAAAAAAB", }; } vector b(n, string(n, 'B')); for (int i = 0; i < n; ++i) { b[i][0] = 'A'; b[i][1] = 'A'; b[0][i] = 'A'; b[1][i] = 'A'; } for (int i = 0; i < n - 2; ++i) { b[i][n - 1] = 'A'; b[n - 1][i] = 'A'; } int sa = 0, sb = 0; for (int i = 0; i < n; ++i) { for (int j = 0; j < n; ++j) { if (b[i][j] == 'A') { ++sa; } else { ++sb; } } } for (int i = 2; i < n - 2; ++i) { for (int j = 2; j < n - 2; ++j) { if (sa < sb) { b[i][j] = 'A'; ++sa; --sb; } } } return b; } int main() { cin.tie(0); ios::sync_with_stdio(0); int n; cin >> n; auto b = solve(n); if (b.empty()) { cout << -1 << '\n'; } else { for (auto&& i : b) { cout << i << '\n'; } } return 0; }