#include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; typedef long long ll; typedef std::vector vi; typedef std::vector vb; typedef std::vector vs; typedef std::vector vd; typedef std::vector vll; typedef std::vector > vvi; typedef vector vvvi; typedef vector vvll; typedef std::vector > vpi; typedef vector vvpi; typedef std::pair pi; typedef std::pair pll; typedef std::vector vpll; const long long mod = 1000000007; #define all(c) (c).begin(),(c).end() #define sz(c) (int)(c).size() #define forn(i, a, b) for(int i = a; i < b; i++) #define pb push_back #define mp make_pair vvi ans; void go(ll n, ll b, ll f, ll c, ll add) { if(n==1) return; if(c >= n-2) { int b1 = b; if(b>0) { b1--; } go(n-1, b1, f, c-n+2, add); ans[add].pb(add+n-1); forn(i,1,n-1) ans[add+n-1].pb(add+i); if(b1>t>>b>>f>>c; ll n = t+1; ans.resize(n); // if(b+f+c > (n*(n-1))/2 || f+c > ((n-1)*(n-2))/2) { // cout<<-1; // return 0; // } ll in = max(t+f, b); if(in + c > (n*(n-1))/2) { cout<<-1; return 0; } go(n,b,f,c,0); // vi g; // ll left = ((n-1)*(n-2))/2 - c; // int v = n-1; // while(v>0) { // g.pb(1); // v--; // while(left >= g.back() && v >0) { // v--; // left -= g.back(); // g.back()++; // } // } //// for(auto x : g) cout<