Problem:
Score: 500 points

Problem Statement

Does there exist an undirected graph with N vertices satisfying the following conditions?

The graph is simple and connected.

The vertices are numbered 1, 2, ..., N.

Let M be the number of edges in the graph. The edges are numbered 1, 2, ..., M, the length of each edge is 1, and Edge i connects Vertex u_i and Vertex v_i.

There are exactly K pairs of vertices (i,\ j)\ (i < j) such that the shortest distance between them is 2.

If there exists such a graph, construct an example.

Constraints

All values in input are integers.

2 \leq N \leq 100

0 \leq K \leq \frac{N(N - 1)}{2}

Input

Input is given from Standard Input in the following format:

N K

Output

If there does not exist an undirected graph with N vertices satisfying the conditions, print -1.

If there exists such a graph, print an example in the following format (refer to Problem Statement for what the symbols stand for):

M
u_1 v_1
:
u_M v_M

If there exist multiple graphs satisfying the conditions, any of them will be accepted.

Sample Input 1

5 3

Sample Output 1

5
4 3
1 2
3 1
4 5
2 3

This graph has three pairs of vertices such that the shortest distance between them is 2: (1,\ 4), (2,\ 4), and (3,\ 5). Thus, the condition is satisfied.

Sample Input 2

5 8

Sample Output 2

-1

There is no graph satisfying the conditions.

Solution in PHP7 (7.0.15) (judge verdict: Wrong Answer)

<?php
  	fscanf(STDIN, '%d %d', $norm, $goal);

	if($norm == 2){
      	if($goal == 0){
          	$start[] = 1;
          	$end[] = 2;
        }
    }
	$sum = $norm - 2;
	for($i = 0; $i <= $norm - 3; $i++){
      	$sum += $i;
    }
	if($sum < $goal){
      	echo -1;
      	exit;
    }

	for($i = $norm - 3; $i >= 0; $i--){//分岐数
      	$sum = $norm - 2;
      	for($j = 0; $j <= $i; $j++){
          	$sum += $j;
        }
      	if($sum <= $goal){
          	//分岐数iのグラフ
          	$node = 1;
          	for($j = 2; $j <= $norm - $i; $j++){
              	$start[] = $node;
              	$end[] = $j;
              	$node = $j;
            }
          	for($j = 0; $j < $i; $j++){
              	$start[] = $node + $j + 1;
              	$end[] = 2;
            }
          	//分岐間に枝を増やして調整
          	for($j = 0; $j < $goal - $sum; $j++){
              	$start[] = $node + $j + 1;
              	$end[] = 1;
            }
          	break;
        }
    }
      
	//辺数
    $edgeNum = count($start);
    if($edgeNum > 0){
      	echo "$edgeNum\n";
      	for($i = 0; $i < $edgeNum; $i++){
          	printf("%d %d\n", $start[$i], $end[$i]);
        }
    }