Problem p02825 (C++)

Buggy submission (status: Runtime Error):
#include "bits/stdc++.h"
using namespace std;

int main() {
  int N;
  cin >> N;
  if (N == 2) {
    cout << -1 << endl;
    return 0;
  }
  if (N == 3) {
    cout << "aa.\n..b\n..b\n";
    return 0;
  }
  if (N == 6) {
    cout << "aa....\n..b...\n..b...\n...aa.\n.....b\n.....b\n";
    return 0;
  }
  if (N == 7) {
    cout << "aabbcc.\nddee..h\nffgg..h\n....mki\n....mki\n....nlj\n....nlj\n";
    return 0;
  }
  if (N == 11) {
    cout << "aacd.......\nbbcd.......\nefgg.......\nefhh.......\n....aabbcc.\n."
            "...ddee..h\n....ffgg..h\n........mki\n........mki\n........nlj\n.."
            "......nlj\n";
  }
  vector<vector<char>> V4 = {{'a', 'a', 'c', 'd'},
                             {'b', 'b', 'c', 'd'},
                             {'e', 'f', 'g', 'g'},
                             {'e', 'f', 'h', 'h'}};
  vector<vector<char>> V5 = {{'a', 'a', 'b', 'b', 'c'},
                             {'h', 'i', 'i', '.', 'c'},
                             {'h', '.', '.', 'j', 'd'},
                             {'g', '.', '.', 'j', 'd'},
                             {'g', 'f', 'f', 'e', 'e'}};
  vector<vector<char>> ANS(N, vector<char>(N, '.'));
  int C4, C5;
  for (int i = 0;; i++) {
    if ((N - i * 4) % 5 == 0) {
      C4 = i;
      C5 = (N - i * 4) / 5;
      break;
    }
  }
  int NOW = 0;
  for (int i = 0; i < C4; i++) {
    for (int j = 0; j < 4; j++) {
      for (int k = 0; k < 4; k++) {
        ANS[NOW + j][NOW + k] = V4[j][k];
      }
    }
    NOW += 4;
  }
  for (int i = 0; i < C5; i++) {
    for (int j = 0; j < 5; j++) {
      for (int k = 0; k < 5; k++) {
        ANS[NOW + j][NOW + k] = V5[j][k];
      }
    }
    NOW += 5;
  }
  for (int i = 0; i < N; i++) {
    for (int j = 0; j < N; j++) {
      cout << ANS[i][j];
    }
    cout << endl;
  }
}

Fixed submission:
#include "bits/stdc++.h"
using namespace std;

int main() {
  int N;
  cin >> N;
  if (N == 2) {
    cout << -1 << endl;
    return 0;
  }
  if (N == 3) {
    cout << "aa.\n..b\n..b\n";
    return 0;
  }
  if (N == 6) {
    cout << "aa....\n..b...\n..b...\n...aa.\n.....b\n.....b\n";
    return 0;
  }
  if (N == 7) {
    cout << "aabbcc.\nddee..h\nffgg..h\n....mki\n....mki\n....nlj\n....nlj\n";
    return 0;
  }
  if (N == 11) {
    cout << "aacd.......\nbbcd.......\nefgg.......\nefhh.......\n....aabbcc.\n."
            "...ddee..h\n....ffgg..h\n........mki\n........mki\n........nlj\n.."
            "......nlj\n";
    return 0;
  }
  vector<vector<char>> V4 = {{'a', 'a', 'c', 'd'},
                             {'b', 'b', 'c', 'd'},
                             {'e', 'f', 'g', 'g'},
                             {'e', 'f', 'h', 'h'}};
  vector<vector<char>> V5 = {{'a', 'a', 'b', 'b', 'c'},
                             {'h', 'i', 'i', '.', 'c'},
                             {'h', '.', '.', 'j', 'd'},
                             {'g', '.', '.', 'j', 'd'},
                             {'g', 'f', 'f', 'e', 'e'}};
  vector<vector<char>> ANS(N, vector<char>(N, '.'));
  int C4, C5;
  for (int i = 0;; i++) {
    if ((N - i * 4) % 5 == 0) {
      C4 = i;
      C5 = (N - i * 4) / 5;
      break;
    }
  }
  int NOW = 0;
  for (int i = 0; i < C4; i++) {
    for (int j = 0; j < 4; j++) {
      for (int k = 0; k < 4; k++) {
        ANS[NOW + j][NOW + k] = V4[j][k];
      }
    }
    NOW += 4;
  }
  for (int i = 0; i < C5; i++) {
    for (int j = 0; j < 5; j++) {
      for (int k = 0; k < 5; k++) {
        ANS[NOW + j][NOW + k] = V5[j][k];
      }
    }
    NOW += 5;
  }
  for (int i = 0; i < N; i++) {
    for (int j = 0; j < N; j++) {
      cout << ANS[i][j];
    }
    cout << endl;
  }
}