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 C# (Mono 4.6.2.0) (judge verdict: Wrong Answer)

using System;
using System.Collections.Generic;
class Program
{
	static void Main(string[] args)
	{
		string[] str = Console.ReadLine().Split();
		int N = int.Parse(str[0]);
		int K = int.Parse(str[1]);
		if((K+(K+N-1))*N/2 + (K+N+(K+N+N-1))*N/2 > ((K+N+N+(K+N+N+N-1))*N/2)){
			Console.WriteLine("-1");
		} else {
			int[,]A = new int[N,3];
			for(var i=0;i<N;i++){
              	A[i,0] = K+i;
            }
          	int a1 = K+N+N-2;
          	int a2 = K+N+N+N-(N+1)/2-1;
			for(var i=0;i<N/2;i++){
              	A[i,1] = a1;
              	A[i,2] = a2;
              	a1 -= 2;
              	a2 -= 1;
            }
          	a1 = K+N+N-1;
          	a2 = K+N+N+N-1;
          	for(var i=N/2;i<N;i++){
              	A[i,1] = a1;
              	A[i,2] = a2;
              	a1 -= 2;
              	a2 -= 1;
            }
			for(var i=0;i<N;i++){
				Console.WriteLine(A[i,0]+" "+A[i,1]+" "+A[i,2]);
			}
		}
	}
}