Problem p02825 (C++)

Buggy submission (status: Runtime Error):
#include <bits/stdc++.h>
using namespace std;
using ll = long long;
using uint = unsigned int;
#define rep(i, n) for (int i = 0; i < int(n); i++)
#define rep1(i, n) for (int i = 1; i <= int(n); i++)
#define per(i, n) for (int i = int(n) - 1; i >= 0; i--)
#define per1(i, n) for (int i = int(n); i > 0; i--)
#define all(c) c.begin(), c.end()
#define si(x) int(x.size())
#define pb emplace_back
#define fs first
#define sc second
template <class T> using V = vector<T>;
template <class T> using VV = vector<vector<T>>;
template <class T, class U> void chmax(T &x, U y) {
  if (x < y)
    x = y;
}
template <class T, class U> void chmin(T &x, U y) {
  if (y < x)
    x = y;
}
template <class T> void mkuni(V<T> &v) {
  sort(all(v));
  v.erase(unique(all(v)), v.end());
}
template <class S, class T>
ostream &operator<<(ostream &o, const pair<S, T> &p) {
  return o << "(" << p.fs << "," << p.sc << ")";
}
template <class T> ostream &operator<<(ostream &o, const vector<T> &vc) {
  o << "{";
  for (const T &v : vc)
    o << v << ",";
  o << "}";
  return o;
}
constexpr ll TEN(int n) { return (n == 0) ? 1 : 10 * TEN(n - 1); }

#ifdef LOCAL
#define show(x)                                                                \
  cerr << "LINE" << __LINE__ << " : " << #x << " = " << (x) << endl
void dmpr(ostream &os) { os << endl; }
template <class T, class... Args>
void dmpr(ostream &os, const T &t, const Args &...args) {
  os << t << " ~ ";
  dmpr(os, args...);
}
#define shows(...)                                                             \
  cerr << "LINE" << __LINE__ << " : ";                                         \
  dmpr(cerr, ##__VA_ARGS__)
#define dump(x)                                                                \
  cerr << "LINE" << __LINE__ << " : " << #x << " = {";                         \
  for (auto v : x)                                                             \
    cerr << v << ",";                                                          \
  cerr << "}" << endl;
#else
#define show(x) void(0)
#define dump(x) void(0)
#define shows(...) void(0)
#endif

int main() {
  cin.tie(0);
  ios::sync_with_stdio(false); // DON'T USE scanf/printf/puts !!
  cout << fixed << setprecision(20);

  int N;
  cin >> N;
  assert(N == 5);
  cout << -1 << endl;
}


Fixed submission:
#include <bits/stdc++.h>
using namespace std;
using ll = long long;
using uint = unsigned int;
#define rep(i, n) for (int i = 0; i < int(n); i++)
#define rep1(i, n) for (int i = 1; i <= int(n); i++)
#define per(i, n) for (int i = int(n) - 1; i >= 0; i--)
#define per1(i, n) for (int i = int(n); i > 0; i--)
#define all(c) c.begin(), c.end()
#define si(x) int(x.size())
#define pb emplace_back
#define fs first
#define sc second
template <class T> using V = vector<T>;
template <class T> using VV = vector<vector<T>>;
template <class T, class U> void chmax(T &x, U y) {
  if (x < y)
    x = y;
}
template <class T, class U> void chmin(T &x, U y) {
  if (y < x)
    x = y;
}
template <class T> void mkuni(V<T> &v) {
  sort(all(v));
  v.erase(unique(all(v)), v.end());
}
template <class S, class T>
ostream &operator<<(ostream &o, const pair<S, T> &p) {
  return o << "(" << p.fs << "," << p.sc << ")";
}
template <class T> ostream &operator<<(ostream &o, const vector<T> &vc) {
  o << "{";
  for (const T &v : vc)
    o << v << ",";
  o << "}";
  return o;
}
constexpr ll TEN(int n) { return (n == 0) ? 1 : 10 * TEN(n - 1); }

#ifdef LOCAL
#define show(x)                                                                \
  cerr << "LINE" << __LINE__ << " : " << #x << " = " << (x) << endl
void dmpr(ostream &os) { os << endl; }
template <class T, class... Args>
void dmpr(ostream &os, const T &t, const Args &...args) {
  os << t << " ~ ";
  dmpr(os, args...);
}
#define shows(...)                                                             \
  cerr << "LINE" << __LINE__ << " : ";                                         \
  dmpr(cerr, ##__VA_ARGS__)
#define dump(x)                                                                \
  cerr << "LINE" << __LINE__ << " : " << #x << " = {";                         \
  for (auto v : x)                                                             \
    cerr << v << ",";                                                          \
  cerr << "}" << endl;
#else
#define show(x) void(0)
#define dump(x) void(0)
#define shows(...) void(0)
#endif

int main() {
  cin.tie(0);
  ios::sync_with_stdio(false); // DON'T USE scanf/printf/puts !!
  cout << fixed << setprecision(20);

  int N;
  cin >> N;
  if (N == 2) {
    cout << -1 << endl;
    return 0;
  }
  if (N == 3) {
    cout << "aab" << endl;
    cout << "d.b" << endl;
    cout << "dcc" << endl;
    return 0;
  }
  if (N == 7) {
    cout << "aabbcc." << endl;
    cout << "dde...a" << endl;
    cout << "g.e...a" << endl;
    cout << "gff...b" << endl;
    cout << "...ddeb" << endl;
    cout << "...g.ec" << endl;
    cout << "...gffc" << endl;
    return 0;
  }
  V<string> s[10];
  s[4] = {"abcc", "abdd", "eegh", "ffgh"};
  s[5] = {"aabbc", "hii.c", "h..jd", "g..jd", "gffee"};
  s[6] = {"aabbcc", "xxyyzz", "a.a.a.", "a.a.a.", ".a.a.a", ".a.a.a"};
  rep(n5, 4) rep(n6, 4) {
    int n4 = N - n5 * 5 - n6 * 6;
    if (n4 < 0 || n4 % 4)
      continue;
    n4 /= 4;
    V<string> a(N, string(N, '.'));
    int o = 0;
    rep(i, n4) {
      rep(x, 4) rep(y, 4) a[o + x][o + y] = s[4][x][y];
      o += 4;
    }
    rep(i, n5) {
      rep(x, 5) rep(y, 5) a[o + x][o + y] = s[5][x][y];
      o += 5;
    }
    rep(i, n6) {
      rep(x, 6) rep(y, 6) a[o + x][o + y] = s[6][x][y];
      o += 6;
    }
    rep(i, N) cout << a[i] << endl;
    return 0;
  }
}