Problem: Convexity of a set of points on the plane is the size of the largest subset of points that form a convex polygon. Your task is to build a set of n points with the convexity of exactly m. Your set of points should not contain three points that lie on a straight line.

Input

The single line contains two integers n and m (3 ≤ m ≤ 100, m ≤ n ≤ 2m).

Output

If there is no solution, print "-1". Otherwise, print n pairs of integers — the coordinates of points of any set with the convexity of m. The coordinates shouldn't exceed 108 in their absolute value.

Examples

Input

4 3


Output

0 0
3 0
0 3
1 1


Input

6 3


Output

-1


Input

6 6


Output

10 0
-10 0
10 1
9 1
9 -1
0 -2


Input

7 4


Output

176166 6377
709276 539564
654734 174109
910147 434207
790497 366519
606663 21061
859328 886001

Solution (in JAVA):

Solution:
// practice with rainboy
import java.io.*;
import java.util.*;

public class CF277B extends PrintWriter {
	CF277B() { super(System.out); }
	Scanner sc = new Scanner(System.in);
	public static void main(String[] $) {
		CF277B o = new CF277B(); o.main(); o.flush();
	}

	void main() {
		int n = sc.nextInt();
		int m = sc.nextInt();
		if (m == 3) {
			if (n >= 5) {
				println(-1);
				return;
			}
			println("0 0");
			println("0 3");
			println("3 0");
			if (n == 4)
				println("1 1");
		} else if (m == 4) {
			println("10 10");
			println("0 0");
			println("0 10");
			println("10 0");
			if (n >= 5)
				println("12 13");
			if (n >= 6)
				println("-2 -3");
			if (n >= 7)
				println("-3 12");
			if (n >= 8)
				println("13 -2");
		} else {
			int k = m % 2 == 0 ? m + 1 : m;
			for (int i = 0; i < n; i++) {
				double r = i < m ? 8e7 : 9e7;
				int j = i % m;
				double a = Math.PI * 2 * j / k;
				int x = (int) Math.round(r * Math.cos(a));
				int y = (int) Math.round(r * Math.sin(a));
				println(x + " " + y);
			}
		}
	}
}