Problem p03230 (C++)

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

#define REP(i, n) for (int i = 0; i < (int)(n); ++i)
#define RREP(i, a, b) for (int i = (int)(a); i < (int)(b); ++i)
#define FOR(i, c)                                                              \
  for (__typeof((c).begin()) i = (c).begin(); i != (c).end(); ++i)
#define LET(x, a) __typeof(a) x(a)
// #define IFOR(i,it,c)
// for(__typeof((c).begin())it=(c).begin();it!=(c).end();++it,++i)
#define ALL(c) (c).begin(), (c).end()
#define MP make_pair

#define EXIST(e, s) ((s).find(e) != (s).end())

#define RESET(a) memset((a), 0, sizeof(a))
#define SET(a) memset((a), -1, sizeof(a))
#define PB push_back
#define DEC(it, command) __typeof(command) it = command

// debug
#define dump(x) cerr << #x << " = " << (x) << endl;
#define debug(x)                                                               \
  cerr << #x << " = " << (x) << " (L" << __LINE__ << ")"                       \
       << " " << __FILE__ << endl;
#define debug_v(x)                                                             \
  cerr << #x << " = [";                                                        \
  REP(__ind, (x).size()) { cerr << (x)[__ind] << ", "; }                       \
  cerr << "] (L" << __LINE__ << ")" << endl;

#define whole(f, x, ...)                                                       \
  ([&](decltype((x)) whole) {                                                  \
    return (f)(begin(whole), end(whole), ##__VA_ARGS__);                       \
  })(x)

typedef long long Int;
typedef unsigned long long uInt;
typedef long double rn;

template <class T> T inf() {
  return numeric_limits<T>::has_infinity ? numeric_limits<T>::infinity()
                                         : (numeric_limits<T>::max() / 2);
}

typedef pair<int, int> pii;

/*
#ifdef MYDEBUG
#include"debug.h"
#include"print.h"
#endif
*/
// }}}

//{{{ io
FILE *file_in = stdin, *file_out = stdout;
#define fin normal_in
#define fout normal_out
// const char fname[]="";
// FILE *fin=fopen(fname,"r"),*fout=fopen(fname,"w");
#ifdef __MINGW32__
#define LLD "%I64d"
#define LLU "%I64u"
#else
#define LLD "%lld"
#define LLU "%llu"
#endif
struct NORMAL_IN {
  bool cnt;
  NORMAL_IN() : cnt(true) {}
  operator int() const { return cnt; }
#define endl "\n"
  NORMAL_IN &operator>>(int &n) {
    cnt = fscanf(file_in, "%d", &n) != EOF;
    return *this;
  }
  NORMAL_IN &operator>>(unsigned int &n) {
    cnt = fscanf(file_in, "%u", &n) != EOF;
    return *this;
  }
  NORMAL_IN &operator>>(long long &n) {
    cnt = fscanf(file_in, LLD, &n) != EOF;
    return *this;
  }
  NORMAL_IN &operator>>(unsigned long long &n) {
    cnt = fscanf(file_in, LLU, &n) != EOF;
    return *this;
  }
  NORMAL_IN &operator>>(double &n) {
    cnt = fscanf(file_in, "%lf", &n) != EOF;
    return *this;
  }
  NORMAL_IN &operator>>(long double &n) {
    cnt = fscanf(file_in, "%Lf", &n) != EOF;
    return *this;
  }
  NORMAL_IN &operator>>(char *c) {
    cnt = fscanf(file_in, "%s", c) != EOF;
    return *this;
  }
  NORMAL_IN &operator>>(string &s) {
    s.clear();
    for (bool r = false;;) {
      const char c = getchar();
      if (c == EOF) {
        cnt = false;
        break;
      }
      const int t = isspace(c);
      if (!r and !t)
        r = true;
      if (r) {
        if (!t)
          s.push_back(c);
        else
          break;
      }
    }
    return *this;
  }
  template <class T> NORMAL_IN &operator>>(vector<T> &v) {
    int v_size = v.size();
    REP(i, v_size) { *this >> v[i]; }
    return *this;
  }
} normal_in;

struct NORMAL_OUT {
  NORMAL_OUT &operator<<(const int &n) {
    fprintf(file_out, "%d", n);
    return *this;
  }
  NORMAL_OUT &operator<<(const unsigned int &n) {
    fprintf(file_out, "%u", n);
    return *this;
  }
  NORMAL_OUT &operator<<(const long long &n) {
    fprintf(file_out, LLD, n);
    return *this;
  }
  NORMAL_OUT &operator<<(const unsigned long long &n) {
    fprintf(file_out, LLU, n);
    return *this;
  }
  NORMAL_OUT &operator<<(const double &n) {
    fprintf(file_out, "%lf", n);
    return *this;
  }
  NORMAL_OUT &operator<<(const long double &n) {
    fprintf(file_out, "%Lf", n);
    return *this;
  }
  NORMAL_OUT &operator<<(const char c[]) {
    fprintf(file_out, "%s", c);
    return *this;
  }
  NORMAL_OUT &operator<<(const string &s) {
    fprintf(file_out, "%s", s.c_str());
    return *this;
  }
} normal_out;
struct ERR_OUT {
  template <class T> ERR_OUT &operator<<(const T &a) {
    cerr << "\x1b[7m" << a << "\x1b[m";
    return *this;
  }
} ferr;
//}}}

Int N;

void solve() {
  Int k;
  for (k = 1;; k++) {
    Int N2 = k * (k - 1) / 2;
    if (N2 == N)
      break;
    else if (N2 > N) {
      fout << "No" << endl;
      return;
    }
  }
  fout << "Yes" << endl;
  fout << k << endl;
  vector<vector<int>> v(k);
  int t = 1;
  REP(i, N) for (int j = i + 1; j < N; j++) {
    v[i].push_back(t);
    v[j].push_back(t);
    t++;
  }
  REP(i, v.size()) {
    fout << (int)v[i].size() << " ";
    REP(j, v[i].size()) { fout << v[i][j] << " "; }
    fout << endl;
  }
}

//{{{ main function
int main() {

  fin >> N;
  solve();
  return 0;
}
//}}}

Fixed submission:
// #includes {{{
#include <bits/stdc++.h>
using namespace std;

#define REP(i, n) for (int i = 0; i < (int)(n); ++i)
#define RREP(i, a, b) for (int i = (int)(a); i < (int)(b); ++i)
#define FOR(i, c)                                                              \
  for (__typeof((c).begin()) i = (c).begin(); i != (c).end(); ++i)
#define LET(x, a) __typeof(a) x(a)
// #define IFOR(i,it,c)
// for(__typeof((c).begin())it=(c).begin();it!=(c).end();++it,++i)
#define ALL(c) (c).begin(), (c).end()
#define MP make_pair

#define EXIST(e, s) ((s).find(e) != (s).end())

#define RESET(a) memset((a), 0, sizeof(a))
#define SET(a) memset((a), -1, sizeof(a))
#define PB push_back
#define DEC(it, command) __typeof(command) it = command

// debug
#define dump(x) cerr << #x << " = " << (x) << endl;
#define debug(x)                                                               \
  cerr << #x << " = " << (x) << " (L" << __LINE__ << ")"                       \
       << " " << __FILE__ << endl;
#define debug_v(x)                                                             \
  cerr << #x << " = [";                                                        \
  REP(__ind, (x).size()) { cerr << (x)[__ind] << ", "; }                       \
  cerr << "] (L" << __LINE__ << ")" << endl;

#define whole(f, x, ...)                                                       \
  ([&](decltype((x)) whole) {                                                  \
    return (f)(begin(whole), end(whole), ##__VA_ARGS__);                       \
  })(x)

typedef long long Int;
typedef unsigned long long uInt;
typedef long double rn;

template <class T> T inf() {
  return numeric_limits<T>::has_infinity ? numeric_limits<T>::infinity()
                                         : (numeric_limits<T>::max() / 2);
}

typedef pair<int, int> pii;

/*
#ifdef MYDEBUG
#include"debug.h"
#include"print.h"
#endif
*/
// }}}

//{{{ io
FILE *file_in = stdin, *file_out = stdout;
#define fin normal_in
#define fout normal_out
// const char fname[]="";
// FILE *fin=fopen(fname,"r"),*fout=fopen(fname,"w");
#ifdef __MINGW32__
#define LLD "%I64d"
#define LLU "%I64u"
#else
#define LLD "%lld"
#define LLU "%llu"
#endif
struct NORMAL_IN {
  bool cnt;
  NORMAL_IN() : cnt(true) {}
  operator int() const { return cnt; }
#define endl "\n"
  NORMAL_IN &operator>>(int &n) {
    cnt = fscanf(file_in, "%d", &n) != EOF;
    return *this;
  }
  NORMAL_IN &operator>>(unsigned int &n) {
    cnt = fscanf(file_in, "%u", &n) != EOF;
    return *this;
  }
  NORMAL_IN &operator>>(long long &n) {
    cnt = fscanf(file_in, LLD, &n) != EOF;
    return *this;
  }
  NORMAL_IN &operator>>(unsigned long long &n) {
    cnt = fscanf(file_in, LLU, &n) != EOF;
    return *this;
  }
  NORMAL_IN &operator>>(double &n) {
    cnt = fscanf(file_in, "%lf", &n) != EOF;
    return *this;
  }
  NORMAL_IN &operator>>(long double &n) {
    cnt = fscanf(file_in, "%Lf", &n) != EOF;
    return *this;
  }
  NORMAL_IN &operator>>(char *c) {
    cnt = fscanf(file_in, "%s", c) != EOF;
    return *this;
  }
  NORMAL_IN &operator>>(string &s) {
    s.clear();
    for (bool r = false;;) {
      const char c = getchar();
      if (c == EOF) {
        cnt = false;
        break;
      }
      const int t = isspace(c);
      if (!r and !t)
        r = true;
      if (r) {
        if (!t)
          s.push_back(c);
        else
          break;
      }
    }
    return *this;
  }
  template <class T> NORMAL_IN &operator>>(vector<T> &v) {
    int v_size = v.size();
    REP(i, v_size) { *this >> v[i]; }
    return *this;
  }
} normal_in;

struct NORMAL_OUT {
  NORMAL_OUT &operator<<(const int &n) {
    fprintf(file_out, "%d", n);
    return *this;
  }
  NORMAL_OUT &operator<<(const unsigned int &n) {
    fprintf(file_out, "%u", n);
    return *this;
  }
  NORMAL_OUT &operator<<(const long long &n) {
    fprintf(file_out, LLD, n);
    return *this;
  }
  NORMAL_OUT &operator<<(const unsigned long long &n) {
    fprintf(file_out, LLU, n);
    return *this;
  }
  NORMAL_OUT &operator<<(const double &n) {
    fprintf(file_out, "%lf", n);
    return *this;
  }
  NORMAL_OUT &operator<<(const long double &n) {
    fprintf(file_out, "%Lf", n);
    return *this;
  }
  NORMAL_OUT &operator<<(const char c[]) {
    fprintf(file_out, "%s", c);
    return *this;
  }
  NORMAL_OUT &operator<<(const string &s) {
    fprintf(file_out, "%s", s.c_str());
    return *this;
  }
} normal_out;
struct ERR_OUT {
  template <class T> ERR_OUT &operator<<(const T &a) {
    cerr << "\x1b[7m" << a << "\x1b[m";
    return *this;
  }
} ferr;
//}}}

Int N;

void solve() {
  Int k;
  for (k = 1;; k++) {
    Int N2 = k * (k - 1) / 2;
    if (N2 == N)
      break;
    else if (N2 > N) {
      fout << "No" << endl;
      return;
    }
  }
  fout << "Yes" << endl;
  fout << k << endl;
  vector<vector<int>> v(k);
  int t = 1;
  REP(i, k) for (int j = i + 1; j < k; j++) {
    v[i].push_back(t);
    v[j].push_back(t);
    t++;
  }
  REP(i, v.size()) {
    fout << (int)v[i].size() << " ";
    REP(j, v[i].size()) { fout << v[i][j] << " "; }
    fout << endl;
  }
}

//{{{ main function
int main() {

  fin >> N;
  solve();
  return 0;
}
//}}}