#include <iostream>
#include <algorithm>
#include <utility>
#include <tuple>
#include <vector>
using namespace std;

#define int long

signed main(){
  int n, k;
  cin >> n >> k;
  if(k>(n+1)/2){
    cout << -1;
    return 0;
  }
  else{
    vector<int>b(n);
    for(int i=0; i<n; i++){
      b[i]=k+2*n-1-i;
    }
    int ik[2]={0, k};
    for(int i=0; i<k-1; i++){
      swap(b[ik[i%2]], b[ik[i%2]+k-1-i]);
      ik[i%2]++;
    }
    vector<tuple<int, int, int>>s(n);
    for(int i=0; i<n; i++){
      s[i]=make_tuple(k+i+b[i], k+i, b[i]);
    }
    sort(s.begin(), s.end());
    for(int i=0; i<n; i++){
      cout << get<1>(s[i]) << ' ' << get<2>(s[i]) << ' ' << k+2*n+i << endl;
    }
    return 0;
  }
}

### Prompt

Develop a solution in CPP to the problem described below:

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

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

Examples

Input

1 1


Output

1 2 3


Input

3 3


Output

-1

### Response

```cpp
#include <iostream>
#include <algorithm>
#include <utility>
#include <tuple>
#include <vector>
using namespace std;

#define int long

signed main(){
  int n, k;
  cin >> n >> k;
  if(k>(n+1)/2){
    cout << -1;
    return 0;
  }
  else{
    vector<int>b(n);
    for(int i=0; i<n; i++){
      b[i]=k+2*n-1-i;
    }
    int ik[2]={0, k};
    for(int i=0; i<k-1; i++){
      swap(b[ik[i%2]], b[ik[i%2]+k-1-i]);
      ik[i%2]++;
    }
    vector<tuple<int, int, int>>s(n);
    for(int i=0; i<n; i++){
      s[i]=make_tuple(k+i+b[i], k+i, b[i]);
    }
    sort(s.begin(), s.end());
    for(int i=0; i<n; i++){
      cout << get<1>(s[i]) << ' ' << get<2>(s[i]) << ' ' << k+2*n+i << endl;
    }
    return 0;
  }
}

```