Problem:
Score : 700 points

Problem Statement

Given are positive integers N and K.

Determine if the 3N integers K, K+1, ..., K+3N-1 can be partitioned into N triples (a_1,b_1,c_1), ..., (a_N,b_N,c_N) so that the condition below is satisfied. Any of the integers K, K+1, ..., K+3N-1 must appear in exactly one of those triples.

For every integer i from 1 to N, a_i + b_i \leq c_i holds.

If the answer is yes, construct one such partition.

Constraints

1 \leq N \leq 10^5

1 \leq K \leq 10^9

Input

Input is given from Standard Input in the following format:

N K

Output

If it is impossible to partition the integers satisfying the condition, print -1. If it is possible, print N triples in the following format:

a_1 b_1 c_1
:
a_N b_N c_N

Sample Input 1

1 1

Sample Output 1

1 2 3

Sample Input 2

3 3

Sample Output 2

-1

Solution in C++ (GCC 9.2.1) (judge verdict: Wrong Answer)

#include<iostream>
#include<iomanip>
#include<cmath>
#include<string>
#include<cstring>
#include<vector>
#include<list>
#include<algorithm>
#include<map>
#include<set>
#include<queue>
#include<stack>
using namespace std;
typedef long long ll;
#define fi first
#define se second
#define mp make_pair
#define rep(i, n) for(int i=0;i<n;++i)
#define rrep(i, n) for(int i=n;i>=0;--i)
const int inf=1e9+7;
const ll mod=1e9+7;
const ll mod1=998244353;
const ll big=1e18;
const double PI=2*asin(1);

int main() {
  ll N, K;
  cin>>N>>K;
  if(N+1<2*K) {
    cout<<-1<<endl;
    return 0;
  }
  map<ll, ll>amap; 
  if(K+K+2*N-1<=K+2*N) {
    for(ll i=0;i<N;++i) {
      cout<<K+i<<" "<<K+2*N-1-i<<" "<<K+2*N+i<<endl;
    }
    return 0;
  }
  ll index;
  for(ll i=0;i<N;++i) {
    if(K+2*i>=K+2*N-K-i) {
      index = i;
      break;
    }
    cout<<K+2*i<<" "<<K+2*N-K-i<<" "<<K+2*N+i<<endl;
  }
  for(ll i=0;i<N;++i) {
    if(K+2*i+1>=K+2*N+index-(K+2*i+1)-i) break;
    cout<<K+2*i+1<<" "<<K+2*N+index-(K+2*i+1)-i<<" "<<K+2*N+index+i<<endl;
  }
}