#include <bits/stdc++.h>
using namespace std;
#define rep(i,n) for (int i=0; i<(int)(n); ++i)
#define all(a) (a).begin(), (a).end()
#define rall(a) (a).rbegin(), (a).rend()
using ll = long long;
using vi = vector<int>;
using vl = vector<ll>;
using Graph = vector<vi>;  // vi <=> vl
using vb = vector<bool>;
using boolGraph = vector<vb>;
using P = pair<int, int>;  // int <=> ll
const int MOD = 1e9+7;
const double EPS = 1e-9;

int main() {
  ll N, K; cin >> N >> K;

  ll left = (K + (K + 2*N-1)) * N;
  ll right = ((K + 2*N) + (K + 3*N-1)) * N / 2;
  
  if (left > right) {
    cout << -1 << endl;
    return 0;
  }

  int L = (N+1)/2;
  int a = K;
  int b = K + 2*N-1 - (L-1);
  int c = K + 2*N;
  rep(i,L) {
    cout << a << ' ' << b << ' ' << c << endl;
    a += 1;
    b += 1;
    c += 2;
  }

  int R = N/2;
  b = K + N;
  c = K + 2*N + 1;
  rep(i,R) {
    cout << a << ' ' << b << ' ' << c << endl;
    a += 1;
    b += 1;
    c += 2;
  }
  return 0;
}

### Prompt

Your challenge is to write a cpp solution to the following problem:

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 <bits/stdc++.h>
using namespace std;
#define rep(i,n) for (int i=0; i<(int)(n); ++i)
#define all(a) (a).begin(), (a).end()
#define rall(a) (a).rbegin(), (a).rend()
using ll = long long;
using vi = vector<int>;
using vl = vector<ll>;
using Graph = vector<vi>;  // vi <=> vl
using vb = vector<bool>;
using boolGraph = vector<vb>;
using P = pair<int, int>;  // int <=> ll
const int MOD = 1e9+7;
const double EPS = 1e-9;

int main() {
  ll N, K; cin >> N >> K;

  ll left = (K + (K + 2*N-1)) * N;
  ll right = ((K + 2*N) + (K + 3*N-1)) * N / 2;
  
  if (left > right) {
    cout << -1 << endl;
    return 0;
  }

  int L = (N+1)/2;
  int a = K;
  int b = K + 2*N-1 - (L-1);
  int c = K + 2*N;
  rep(i,L) {
    cout << a << ' ' << b << ' ' << c << endl;
    a += 1;
    b += 1;
    c += 2;
  }

  int R = N/2;
  b = K + N;
  c = K + 2*N + 1;
  rep(i,R) {
    cout << a << ' ' << b << ' ' << c << endl;
    a += 1;
    b += 1;
    c += 2;
  }
  return 0;
}

```