#include <bits/stdc++.h>
#define int long long 
 
using namespace std;
 
int32_t main() {
  int n, k; cin >> n >> k;
  
  set<int> s1, s2, s3;
  for (int i = 0; i < 3 * n; ++i) {
    if (i < n) s1.insert(k + i);
    else if (i < 2 * n) s2.insert(k + i);
    else s3.insert(k + i);
  }

  auto pop = [&](set<int>& x, int maxx) {
    auto it = x.upper_bound(maxx);
    if (it == x.begin()) return -1LL;
    int ret = *prev(it);
    x.erase(prev(it));
    return ret;
  };
 
  vector<tuple<int, int, int>> sol;
  bool par = false;
  for (int i = 0; i < n; ++i) {
    int a, b, c;

    c = pop(s3, 2e18);
    if (par) {
      b = pop(s2, 2e18);
      a = pop(s1, c - b);
    } else {
      a = pop(s1, 2e18);
      b = pop(s2, c - a);
    }
    if (a < 0 || b < 0) {
      cout << -1 << endl;
      return 0;
    }
    sol.emplace_back(a, b, c);
    par = !par;
  }
 
  for (auto itr : sol) {
    int a, b, c; tie(a, b, c) = itr;
    cout << a << " " << b << " " << c << '\n';
  }
    
  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 <bits/stdc++.h>
#define int long long 
 
using namespace std;
 
int32_t main() {
  int n, k; cin >> n >> k;
  
  set<int> s1, s2, s3;
  for (int i = 0; i < 3 * n; ++i) {
    if (i < n) s1.insert(k + i);
    else if (i < 2 * n) s2.insert(k + i);
    else s3.insert(k + i);
  }

  auto pop = [&](set<int>& x, int maxx) {
    auto it = x.upper_bound(maxx);
    if (it == x.begin()) return -1LL;
    int ret = *prev(it);
    x.erase(prev(it));
    return ret;
  };
 
  vector<tuple<int, int, int>> sol;
  bool par = false;
  for (int i = 0; i < n; ++i) {
    int a, b, c;

    c = pop(s3, 2e18);
    if (par) {
      b = pop(s2, 2e18);
      a = pop(s1, c - b);
    } else {
      a = pop(s1, 2e18);
      b = pop(s2, c - a);
    }
    if (a < 0 || b < 0) {
      cout << -1 << endl;
      return 0;
    }
    sol.emplace_back(a, b, c);
    par = !par;
  }
 
  for (auto itr : sol) {
    int a, b, c; tie(a, b, c) = itr;
    cout << a << " " << b << " " << c << '\n';
  }
    
  return 0;
}

```