#include<bits/stdc++.h>
using namespace std;
#define rep(i,n) for(int i=0;i<n;i++)
typedef long long ll;
int main(){
    ll n,k;
    cin>>n>>k;
    ll x=(n-1)/2;
    if(2*k+2*n-1>k+2*n+x){cout<<-1;return 0;}
    vector<ll> ans;
    rep(i,n) ans.push_back(i+k);
    ll m=n;
    if(n%2==0) m--;
    ll a=m/2,b=m-a;
    if(a%2==0) swap(a,b);
    rep(i,a/2) swap(ans[i],ans[a-i-1]);
    for(int i=a;i<a+b/2;i++) swap(ans[i],ans[b+2*a-i-1]);
    vector<pair<ll,ll>> ANS;
    rep(i,n) ANS.push_back(make_pair(ans[i]+k+2*n-1-i,ans[i]));
    sort(ANS.begin(),ANS.end());
    rep(i,n){
        cout<<ANS[i].second<<" "<<ANS[i].first-ANS[i].second<<" "<<k+2*n+i;
        cout<<endl;
    }
}
### Prompt

Construct a Cpp code solution to the problem outlined:

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;
#define rep(i,n) for(int i=0;i<n;i++)
typedef long long ll;
int main(){
    ll n,k;
    cin>>n>>k;
    ll x=(n-1)/2;
    if(2*k+2*n-1>k+2*n+x){cout<<-1;return 0;}
    vector<ll> ans;
    rep(i,n) ans.push_back(i+k);
    ll m=n;
    if(n%2==0) m--;
    ll a=m/2,b=m-a;
    if(a%2==0) swap(a,b);
    rep(i,a/2) swap(ans[i],ans[a-i-1]);
    for(int i=a;i<a+b/2;i++) swap(ans[i],ans[b+2*a-i-1]);
    vector<pair<ll,ll>> ANS;
    rep(i,n) ANS.push_back(make_pair(ans[i]+k+2*n-1-i,ans[i]));
    sort(ANS.begin(),ANS.end());
    rep(i,n){
        cout<<ANS[i].second<<" "<<ANS[i].first-ANS[i].second<<" "<<k+2*n+i;
        cout<<endl;
    }
}
```