Problem p04050 (C++)

Buggy submission (status: Runtime Error):
//{
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef double lf;
typedef pair<ll, ll> ii;
#define REP(i, n) for (ll i = 0; i < n; i++)
#define REP1(i, n) for (ll i = 1; i <= n; i++)
#define FILL(i, n) memset(i, n, sizeof i)
#define X first
#define Y second
#define SZ(_a) (int)_a.size()
#define ALL(_a) _a.begin(), _a.end()
#define pb push_back
#ifdef brian
#define debug(...)                                                             \
  do {                                                                         \
    fprintf(stderr, "%s - %d (%s) = ", __PRETTY_FUNCTION__, __LINE__,          \
            #__VA_ARGS__);                                                     \
    _do(__VA_ARGS__);                                                          \
  } while (0)
template <typename T> void _do(T &&_x) { cerr << _x << endl; }
template <typename T, typename... S> void _do(T &&_x, S &&..._t) {
  cerr << _x << " ,";
  _do(_t...);
}
template <typename _a, typename _b>
ostream &operator<<(ostream &_s, const pair<_a, _b> &_p) {
  return _s << "(" << _p.X << "," << _p.Y << ")";
}
template <typename It> ostream &_OUTC(ostream &_s, It _ita, It _itb) {
  _s << "{";
  for (It _it = _ita; _it != _itb; _it++) {
    _s << (_it == _ita ? "" : ",") << *_it;
  }
  _s << "}";
  return _s;
}
template <typename _a> ostream &operator<<(ostream &_s, vector<_a> &_c) {
  return _OUTC(_s, ALL(_c));
}
template <typename _a> ostream &operator<<(ostream &_s, set<_a> &_c) {
  return _OUTC(_s, ALL(_c));
}
template <typename _a, typename _b>
ostream &operator<<(ostream &_s, map<_a, _b> &_c) {
  return _OUTC(_s, ALL(_c));
}
template <typename _t> void pary(_t _a, _t _b) {
  _OUTC(cerr, _a, _b);
  cerr << endl;
}
#define IOS()
#else
#define debug(...)
#define pary(...)
#define endl '\n'
#define IOS()                                                                  \
  ios_base::sync_with_stdio(0);                                                \
  cin.tie(0);
#endif // brian
//}

const ll MAXn = 1e5 + 5, MAXlg = __lg(MAXn) + 2;
const ll MOD = 1000000007;
const ll INF = ll(1e15);

int main() {
  IOS();
  ll n, m;
  cin >> n >> m;
  vector<int> o, e, a, b;
  for (int i = 1; i <= m; i++) {
    ll t;
    cin >> t;
    if (t & 1)
      o.pb(t);
    else
      e.pb(t);
  }
  if (SZ(o) > 2) {
    cout << "Impossible" << endl;
    return 0;
  }
  if (SZ(o) == 2) {
    a.pb(o.back());
    o.pop_back();
  } else {
    a.pb(e.back());
    e.pop_back();
  }
  if (a[0] > 1)
    b.pb(a[0] - 1);
  for (auto t : e) {
    a.pb(t);
    b.pb(t);
  }
  if (SZ(o)) {
    a.pb(o[0]);
    b.pb(o[0] + 1);
  } else
    b.pb(1);
  for (int i = 0; i < SZ(a); i++)
    cout << a[i] << " \n"[i == SZ(a) - 1];
  cout << SZ(b) << endl;
  for (int i = 0; i < SZ(b); i++)
    cout << b[i] << " \n"[i == SZ(b) - 1];
}


Fixed submission:
//{
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef double lf;
typedef pair<ll, ll> ii;
#define REP(i, n) for (ll i = 0; i < n; i++)
#define REP1(i, n) for (ll i = 1; i <= n; i++)
#define FILL(i, n) memset(i, n, sizeof i)
#define X first
#define Y second
#define SZ(_a) (int)_a.size()
#define ALL(_a) _a.begin(), _a.end()
#define pb push_back
#ifdef brian
#define debug(...)                                                             \
  do {                                                                         \
    fprintf(stderr, "%s - %d (%s) = ", __PRETTY_FUNCTION__, __LINE__,          \
            #__VA_ARGS__);                                                     \
    _do(__VA_ARGS__);                                                          \
  } while (0)
template <typename T> void _do(T &&_x) { cerr << _x << endl; }
template <typename T, typename... S> void _do(T &&_x, S &&..._t) {
  cerr << _x << " ,";
  _do(_t...);
}
template <typename _a, typename _b>
ostream &operator<<(ostream &_s, const pair<_a, _b> &_p) {
  return _s << "(" << _p.X << "," << _p.Y << ")";
}
template <typename It> ostream &_OUTC(ostream &_s, It _ita, It _itb) {
  _s << "{";
  for (It _it = _ita; _it != _itb; _it++) {
    _s << (_it == _ita ? "" : ",") << *_it;
  }
  _s << "}";
  return _s;
}
template <typename _a> ostream &operator<<(ostream &_s, vector<_a> &_c) {
  return _OUTC(_s, ALL(_c));
}
template <typename _a> ostream &operator<<(ostream &_s, set<_a> &_c) {
  return _OUTC(_s, ALL(_c));
}
template <typename _a, typename _b>
ostream &operator<<(ostream &_s, map<_a, _b> &_c) {
  return _OUTC(_s, ALL(_c));
}
template <typename _t> void pary(_t _a, _t _b) {
  _OUTC(cerr, _a, _b);
  cerr << endl;
}
#define IOS()
#else
#define debug(...)
#define pary(...)
#define endl '\n'
#define IOS()                                                                  \
  ios_base::sync_with_stdio(0);                                                \
  cin.tie(0);
#endif // brian
//}

const ll MAXn = 1e5 + 5, MAXlg = __lg(MAXn) + 2;
const ll MOD = 1000000007;
const ll INF = ll(1e15);

int main() {
  IOS();
  ll n, m;
  cin >> n >> m;
  vector<int> o, e, a, b;
  for (int i = 1; i <= m; i++) {
    ll t;
    cin >> t;
    if (t & 1)
      o.pb(t);
    else
      e.pb(t);
  }
  if (SZ(o) > 2) {
    cout << "Impossible" << endl;
    return 0;
  }
  if (SZ(o)) {
    a.pb(o.back());
    o.pop_back();
  } else {
    a.pb(e.back());
    e.pop_back();
  }
  if (a[0] > 1)
    b.pb(a[0] - 1);
  for (auto t : e) {
    a.pb(t);
    b.pb(t);
  }
  if (SZ(o)) {
    a.pb(o[0]);
    b.pb(o[0] + 1);
  } else
    b.pb(1);
  for (int i = 0; i < SZ(a); i++)
    cout << a[i] << " \n"[i == SZ(a) - 1];
  cout << SZ(b) << endl;
  for (int i = 0; i < SZ(b); i++)
    cout << b[i] << " \n"[i == SZ(b) - 1];
}