#include<bits/stdc++.h>
#define ld double
#define ull unsigned long long
#define ll long long
#define pii pair<int,int >
#define iiii pair<int,pii >
#define mp make_pair
#define INF 1000000000
#define MOD 1000000007
#define rep(i,x) for(int (i)=0;(i)<(x);(i)++)
inline int getint(){
	int x=0,p=1;char c=getchar();
	while (c<=32)c=getchar();
	if(c==45)p=-p,c=getchar();
	while (c>32)x=x*10+c-48,c=getchar();
	return x*p;
}
using namespace std;
//ruogu_alter
int n, k;
vector<pii > v;
//
bool cmp(pii x, pii y) {
	return x.first + x.second < y.first + y.second;
}
int main(){
	//freopen(".in","r",stdin);
	//freopen(".out","w",stdout);
	n = getint(); k = getint();
	if (2 * k - 2 > n - 1) return !printf("%d\n", -1);
	int l = k + n, r = k + 2 * n - 1, mid = (l + r + 1) >> 1;
	for(int i = 0, p = mid; i < n; i++) {
		v.push_back(mp(k + i, p));
		if (p == r) p = l; else ++p;
	}
	sort(v.begin(), v.end(), cmp);
	rep(i, v.size()) printf("%d %d %d\n",v[i].first, v[i].second, k + 2 * n + i);
	return 0;
}

### Prompt

In Cpp, your task is to solve 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>
#define ld double
#define ull unsigned long long
#define ll long long
#define pii pair<int,int >
#define iiii pair<int,pii >
#define mp make_pair
#define INF 1000000000
#define MOD 1000000007
#define rep(i,x) for(int (i)=0;(i)<(x);(i)++)
inline int getint(){
	int x=0,p=1;char c=getchar();
	while (c<=32)c=getchar();
	if(c==45)p=-p,c=getchar();
	while (c>32)x=x*10+c-48,c=getchar();
	return x*p;
}
using namespace std;
//ruogu_alter
int n, k;
vector<pii > v;
//
bool cmp(pii x, pii y) {
	return x.first + x.second < y.first + y.second;
}
int main(){
	//freopen(".in","r",stdin);
	//freopen(".out","w",stdout);
	n = getint(); k = getint();
	if (2 * k - 2 > n - 1) return !printf("%d\n", -1);
	int l = k + n, r = k + 2 * n - 1, mid = (l + r + 1) >> 1;
	for(int i = 0, p = mid; i < n; i++) {
		v.push_back(mp(k + i, p));
		if (p == r) p = l; else ++p;
	}
	sort(v.begin(), v.end(), cmp);
	rep(i, v.size()) printf("%d %d %d\n",v[i].first, v[i].second, k + 2 * n + i);
	return 0;
}

```