#include <bits/stdc++.h>
using namespace std;
struct node {
  int x, y;
  bool operator<(node b) const { return x == b.x ? y < b.y : x < b.x; }
  bool operator==(node b) const { return x == b.x && y == b.y; }
} A[200005], B[200005];
int n, k, ans;
int main() {
  scanf("%d%d", &n, &k);
  for (int i = 1; i <= n; i++) scanf("%d%d", &A[i].x, &A[i].y);
  sort(A + 1, A + n + 1);
  if (n <= k) {
    puts("-1");
    return 0;
  }
  for (int i = 0; i <= k; i++) {
    for (int j = 0; i + j <= k; j++) {
      int l = i + 1, r = n - j, use = i + j;
      int hx = A[l].x + A[r].x, hy = A[l].y + A[r].y;
      l++;
      r--;
      while (l <= r) {
        if (A[l].x + A[r].x == hx && A[l].y + A[r].y == hy)
          l++, r--;
        else if (l < r && A[l].x + A[r - 1].x == hx &&
                 A[l].y + A[r - 1].y == hy)
          r--, use++;
        else
          l++, use++;
      }
      if (use <= k) {
        ans++;
        B[ans].x = hx;
        B[ans].y = hy;
      }
    }
  }
  sort(B + 1, B + ans + 1);
  ans = unique(B + 1, B + ans + 1) - B - 1;
  printf("%d\n", ans);
  for (int i = 1; i <= ans; i++)
    printf("%.1lf %.1lf\n", B[i].x / 2.0, B[i].y / 2.0);
}
