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 (GCC 5.4.1) (judge verdict: Accepted)

#include<stdio.h>

int main(){
  long long n,k,sa,sb,sc;
  long long a,b,c;
  scanf("%lld%lld",&n,&k);
  sa=(((k)+(k+n-1))*n)/2;
  sb=(((k+n)+(k+2*n-1))*n)/2;
  sc=(((k+2*n)+(k+3*n-1))*n)/2;
  if(sa+sb>sc){printf("-1\n");return 0;}
   a=(n/2);
   b=-1;
   for(c=0;c<n;c++){
    a--;
    if(a<0){a=n-1;}
    b+=2;
    if(b>=n){
      if(n%2==0){b--;}
      b%=n;
    }
    printf("%lld %lld %lld\n",k+a,k+n+b,k+2*n+c);
  }
}