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 CPP):

Solution:
#include <bits/stdc++.h>
int n, m;
double dx[5] = {-1000007, 1000007, 1000007, -1000007, -123045};
double dy[5] = {-1000007, -1000007, 1000007, 1000007, 543201};
int main() {
  scanf("%d%d", &n, &m);
  if (((n > 4) && (m == 3)))
    printf("-1\n");
  else {
    double ang = (180.0 * (m - 2.0)) / (double)(m);
    ang = (180.0 - ang) / 180.0 * acos(-1);
    n -= m;
    double x, y, xx, yy;
    int pos = 0;
    x = y = yy = 0;
    xx = 1009;
    printf("%.0f %.0f\n", x + 1e-5, y + 1e-5);
    for (int i = 2; i <= m; i++) {
      printf("%.0f %.0f\n", xx + 1e-5, yy + 1e-5);
      if (n > 0) {
        printf("%.0f %.0f\n", (x + xx) / 3.0 + dx[pos] + 1e-5,
               (y + yy) / 2.0 + dy[pos] + 1e-5);
        pos = (pos + 1) % 5;
        n--;
      }
      double ox = xx - x, oy = yy - y;
      double px = cos(ang) * ox - sin(ang) * oy,
             py = +sin(ang) * ox + cos(ang) * oy;
      x = xx;
      y = yy;
      xx = x + px;
      yy = y + py;
    }
    if (n > 0) {
      printf("%.0f %.0f\n", (x + xx) / 3.0 + dx[pos] + 1e-5,
             (y + yy) / 2.0 + dy[pos] + 1e-5);
      pos = (pos + 1) % 5;
      n--;
    }
  }
  return 0;
}