Problem:
Score : 700 points

Problem Statement

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

Sample Input 1

1 1

Sample Output 1

1 2 3

Sample Input 2

3 3

Sample Output 2

-1

Solution in Python (3.4.3) (judge verdict: Accepted)

import sys
read = sys.stdin.buffer.read
readline = sys.stdin.buffer.readline
readlines = sys.stdin.buffer.readlines

import numpy as np

N,K = map(int,read().split())

def solve_even(N,K):
    L = N//2
    x = np.arange(K,K+N)
    y = np.concatenate([np.arange(K+L+N,K+L+N+L),np.arange(K+N,K+L+N)])
    add = N-(K+L)
    z = x + y + add
    z[L:] += 1
    answer = np.vstack([x,y,z]).T
    print('\n'.join(' '.join(row) for row in answer.astype(str)))

def solve_odd(N,K):
    L = N//2
    x = np.arange(K,K+N)
    y = np.concatenate([np.arange(K+L+N,K+L+N+L+1),np.arange(K+N,K+L+N)])
    add = N-(K+L)
    z = x + y + add
    answer = np.vstack([x,y,z]).T
    print('\n'.join(' '.join(row) for row in answer.astype(str)))

def solve(N,K):
    if K+K > N+1:
        print(-1)
        return
    if N&1:
        solve_odd(N,K)
    else:
        solve_even(N,K)

solve(N,K)