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.Linq;//リストの使用
using System.Collections.Generic;
using System.Text;//テキストの高速出力に必要
class Program
{
	static void Main()
	{
    string[] input = Console.ReadLine().Split(' ');
    int n = int.Parse(input[0]);
    long k = long.Parse(input[1]);
		bool[] usedNum = new bool[2*n];
    bool answer = true;
    long[][] answers = new long[n][];
    for(int i = 0; i < n; i++)
    {
      answers[i] = new long[3];
      answers[i][2] = k+3*n-1-i;
    }

    for(long i = 0; i < n; i++)
    {
      answers[i][0] = k+i;
      answers[i][1] = k+2*n-1-i;

      if(answers[i][0]+answers[i][1] > answers[i][2]) answer = false;
    }


    if(!answer) Console.WriteLine(-1);
    else
    {  
      var answerText = new StringBuilder();
      for(long i = 0; i < answers.Length; i++)
      {
        answerText.AppendLine(string.Join(" ", answers[i]));
      }
      Console.Write(answerText);
    }
	}
}