#include <bits/stdc++.h>

using namespace std;

typedef double D;
typedef long long int LL;

#define st first
#define nd second
#define PLL pair <LL, LL>
#define PII pair <int, int>

const int N = 1e6 + 7;
const int MX = 1e9 + 7;
const LL INF = 1LL * MX * MX;

int n, k;
set <int> C;

void no(){
	puts("-1");
	exit(0);
}

int main(){
	scanf("%d %d", &n, &k);
	if(n < k)
		no();
	
	if(k > (n + 1) / 2)
		no();
	
	k--;
	for(int i = 1; i <= n; ++i)
		C.insert(k + n + n + i);
	
	int last = n + n;
	for(int i = n; i >= 1; --i){
		if(last <= k + n)
			last = k + n + n;

		int cur = k + i + last;
		auto it = C.lower_bound(cur);

		printf("%d %d %d\n", k + i, last, *it);
		C.erase(it); last--;
	}

	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>

using namespace std;

typedef double D;
typedef long long int LL;

#define st first
#define nd second
#define PLL pair <LL, LL>
#define PII pair <int, int>

const int N = 1e6 + 7;
const int MX = 1e9 + 7;
const LL INF = 1LL * MX * MX;

int n, k;
set <int> C;

void no(){
	puts("-1");
	exit(0);
}

int main(){
	scanf("%d %d", &n, &k);
	if(n < k)
		no();
	
	if(k > (n + 1) / 2)
		no();
	
	k--;
	for(int i = 1; i <= n; ++i)
		C.insert(k + n + n + i);
	
	int last = n + n;
	for(int i = n; i >= 1; --i){
		if(last <= k + n)
			last = k + n + n;

		int cur = k + i + last;
		auto it = C.lower_bound(cur);

		printf("%d %d %d\n", k + i, last, *it);
		C.erase(it); last--;
	}

	return 0;
}
```