#include<iostream>
#include<set>
using namespace std;
int N;
long K;
long A[1<<17],B[1<<17],C[1<<17];
int main()
{
	cin>>N>>K;
	set<int>L,R;
	for(int i=0;i<N;i++)L.insert(K+i),R.insert(K+N+i);
	for(int i=0;i<N;i++)
	{
		C[i]=K+2*N+N-i-1;
		if(i%2==0)
		{
			set<int>::iterator it=R.end();
			it--;
			B[i]=*it;
			R.erase(it);
			it=L.lower_bound(C[i]-B[i]);
			if(it==L.end())it--;
			if(*it+B[i]<=C[i])
			{
				A[i]=*it;
				L.erase(it);
			}
			else
			{
				cout<<-1<<endl;
				return 0;
			}
		}
		else
		{
			set<int>::iterator it=L.end();
			it--;
			A[i]=*it;
			L.erase(it);
			it=R.lower_bound(C[i]-A[i]);
			if(it==R.end())it--;
			if(A[i]+*it<=C[i])
			{
				B[i]=*it;
				R.erase(it);
			}
			else
			{
				cout<<-1<<endl;
				return 0;
			}
		}
	}
	for(int i=0;i<N;i++)cout<<A[i]<<" "<<B[i]<<" "<<C[i]<<"\n";
}

### 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<iostream>
#include<set>
using namespace std;
int N;
long K;
long A[1<<17],B[1<<17],C[1<<17];
int main()
{
	cin>>N>>K;
	set<int>L,R;
	for(int i=0;i<N;i++)L.insert(K+i),R.insert(K+N+i);
	for(int i=0;i<N;i++)
	{
		C[i]=K+2*N+N-i-1;
		if(i%2==0)
		{
			set<int>::iterator it=R.end();
			it--;
			B[i]=*it;
			R.erase(it);
			it=L.lower_bound(C[i]-B[i]);
			if(it==L.end())it--;
			if(*it+B[i]<=C[i])
			{
				A[i]=*it;
				L.erase(it);
			}
			else
			{
				cout<<-1<<endl;
				return 0;
			}
		}
		else
		{
			set<int>::iterator it=L.end();
			it--;
			A[i]=*it;
			L.erase(it);
			it=R.lower_bound(C[i]-A[i]);
			if(it==R.end())it--;
			if(A[i]+*it<=C[i])
			{
				B[i]=*it;
				R.erase(it);
			}
			else
			{
				cout<<-1<<endl;
				return 0;
			}
		}
	}
	for(int i=0;i<N;i++)cout<<A[i]<<" "<<B[i]<<" "<<C[i]<<"\n";
}

```