#include <cstdio>
#include <vector>
#include <set>

using namespace std;

int main() {
    int n, k, i, j;
    vector <int> v;
    vector <pair<int, pair<int, int>>> ans;
    set <int> s;
    set <int>::iterator it;
    
    scanf("%d %d", &n, &k);
    
    for (i = n; i < n * 2; i++) s.insert(k + i);
    
    for (i = 0; i < n; i += 2) v.push_back(k + i);
    for (i = 1; i < n; i += 2) v.push_back(k + i);
    
    for (i = n * 2, j = 0; i < n * 3; i++, j++) {
        int x = k + i, y = v[j], z;
        
        it = s.upper_bound(x - y);
        
        if (it == s.begin()) {
            puts("-1");
            
            return 0;
        }
        
        it--;
        z = *it;
        s.erase(z);
        
        ans.push_back(make_pair(y, make_pair(z, x)));
    }
    
    for (i = 0; i < ans.size(); i++) printf("%d %d %d\n", ans[i].first, ans[i].second.first, ans[i].second.second);
    
    return 0;
}

### Prompt

Your task is to create 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 <vector>
#include <set>

using namespace std;

int main() {
    int n, k, i, j;
    vector <int> v;
    vector <pair<int, pair<int, int>>> ans;
    set <int> s;
    set <int>::iterator it;
    
    scanf("%d %d", &n, &k);
    
    for (i = n; i < n * 2; i++) s.insert(k + i);
    
    for (i = 0; i < n; i += 2) v.push_back(k + i);
    for (i = 1; i < n; i += 2) v.push_back(k + i);
    
    for (i = n * 2, j = 0; i < n * 3; i++, j++) {
        int x = k + i, y = v[j], z;
        
        it = s.upper_bound(x - y);
        
        if (it == s.begin()) {
            puts("-1");
            
            return 0;
        }
        
        it--;
        z = *it;
        s.erase(z);
        
        ans.push_back(make_pair(y, make_pair(z, x)));
    }
    
    for (i = 0; i < ans.size(); i++) printf("%d %d %d\n", ans[i].first, ans[i].second.first, ans[i].second.second);
    
    return 0;
}

```