#include <cstdio>
#include <cstdlib>
#include <algorithm>
#include <vector>
#include <cstring>
#include <queue>
#include <functional>
#include <set>
#include <map>
#include <string>
#include <cmath>
#include <cassert>

#define SIZE 100005
 
using namespace std;
typedef long long int ll;
typedef pair <int,int> P;
 
using namespace std;


int main()
{	
	ll N, K;
	scanf("%lld %lld", &N, &K);
	ll L, R;
	L=(2*K+2*N-1)*N;
	R=(2*K+5*N-1)*N/2;
	
	ll answer=0;
	ll bengi;
	ll aa;
	if(L>R)
	{	answer=-1;
	printf("%lld", answer);}
	else
	{
		if(N%2!=0)
		{
			for(ll i=0;i<N;i++){
				if(i%2==0)
				{	bengi=K+2*N-1-i/2;
					aa=K+2*N+(N-1)/2+i/2;}
				else
				{	bengi=K+N+(N-1-i)/2;
					aa=K+2*N+(i-1)/2;}
			
				printf("%lld %lld %lld \n", K+i,bengi ,aa);
			}
		}
		else
		{
			for(ll i=0;i<N;i++){
				if(i%2==0)
				{	bengi=K+N+(N-2-i)/2;
					aa=K+2*N+i/2;
					}
				else
				{	bengi=K+N+N/2+(N-1-i)/2;
					aa=K+2*N+N/2+(i-1)/2;}
			
				printf("%lld %lld %lld \n", K+i,bengi ,aa);
			}
		}	
	}
	

	
}

### Prompt

Generate 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 <cstdio>
#include <cstdlib>
#include <algorithm>
#include <vector>
#include <cstring>
#include <queue>
#include <functional>
#include <set>
#include <map>
#include <string>
#include <cmath>
#include <cassert>

#define SIZE 100005
 
using namespace std;
typedef long long int ll;
typedef pair <int,int> P;
 
using namespace std;


int main()
{	
	ll N, K;
	scanf("%lld %lld", &N, &K);
	ll L, R;
	L=(2*K+2*N-1)*N;
	R=(2*K+5*N-1)*N/2;
	
	ll answer=0;
	ll bengi;
	ll aa;
	if(L>R)
	{	answer=-1;
	printf("%lld", answer);}
	else
	{
		if(N%2!=0)
		{
			for(ll i=0;i<N;i++){
				if(i%2==0)
				{	bengi=K+2*N-1-i/2;
					aa=K+2*N+(N-1)/2+i/2;}
				else
				{	bengi=K+N+(N-1-i)/2;
					aa=K+2*N+(i-1)/2;}
			
				printf("%lld %lld %lld \n", K+i,bengi ,aa);
			}
		}
		else
		{
			for(ll i=0;i<N;i++){
				if(i%2==0)
				{	bengi=K+N+(N-2-i)/2;
					aa=K+2*N+i/2;
					}
				else
				{	bengi=K+N+N/2+(N-1-i)/2;
					aa=K+2*N+N/2+(i-1)/2;}
			
				printf("%lld %lld %lld \n", K+i,bengi ,aa);
			}
		}	
	}
	

	
}

```