#include <bits/stdc++.h>
using namespace std;
#define rep(i,n) for(int i=0;i<n;i++)
typedef pair<int,int>P;
typedef pair<P,int>P1;
#define pb push_back
#define fi first
#define sc second

int n,k;
vector<int>x,y,z;
bool used[5000005];
int main(){
    cin >> n >> k;
    int m = n/2;
    int a = k+m;
    int b = k+2*n-1;
    while(a < b){
        x.pb(a); y.pb(b);
        used[a-k] = used[b-k] = 1;
        a++; b-=2;
    }
    vector<int>zan;
    rep(x,2*n) if(!used[x]) zan.pb(x);
    rep(i,zan.size()/2) {
        x.pb(zan[i]+k);
        y.pb(zan[zan.size()-1-i]+k);
    }
    for(int i=2*n;i<3*n;i++) z.pb(k+i); reverse(z.begin(),z.end());
    rep(i,n){
        if(x[i]+y[i] > z[i]){ puts("-1"); return 0;}
    }
    rep(i,n) cout << x[i] << " " << y[i] << " " << z[i] << endl;
}
### Prompt

Please create a solution in Cpp 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 <bits/stdc++.h>
using namespace std;
#define rep(i,n) for(int i=0;i<n;i++)
typedef pair<int,int>P;
typedef pair<P,int>P1;
#define pb push_back
#define fi first
#define sc second

int n,k;
vector<int>x,y,z;
bool used[5000005];
int main(){
    cin >> n >> k;
    int m = n/2;
    int a = k+m;
    int b = k+2*n-1;
    while(a < b){
        x.pb(a); y.pb(b);
        used[a-k] = used[b-k] = 1;
        a++; b-=2;
    }
    vector<int>zan;
    rep(x,2*n) if(!used[x]) zan.pb(x);
    rep(i,zan.size()/2) {
        x.pb(zan[i]+k);
        y.pb(zan[zan.size()-1-i]+k);
    }
    for(int i=2*n;i<3*n;i++) z.pb(k+i); reverse(z.begin(),z.end());
    rep(i,n){
        if(x[i]+y[i] > z[i]){ puts("-1"); return 0;}
    }
    rep(i,n) cout << x[i] << " " << y[i] << " " << z[i] << endl;
}
```