#include <bits/stdc++.h>
using namespace std;
struct rec {
  int x, y;
} a[200010], c, d;
set<rec> f;
set<rec>::iterator it;
int n, m, i, j, k, l, r;
bool operator<(rec a, rec b) { return a.x < b.x || a.x == b.x && a.y < b.y; }
int main() {
  cin >> n >> m;
  for (i = 1; i <= n; i++) scanf("%d%d", &a[i].x, &a[i].y);
  if (n <= m) {
    puts("-1");
    return 0;
  }
  sort(a + 1, a + n + 1);
  for (i = 1; i <= m + 1; i++)
    for (j = 1; j <= m + 1; j++) {
      c = (rec){a[i].x + a[n - j + 1].x, a[i].y + a[n - j + 1].y};
      for (l = 1, r = n, k = 0; l <= r;)
        if (d = (rec){a[l].x + a[r].x, a[l].y + a[r].y},
            c.x == d.x && c.y == d.y)
          l++, r--;
        else
          k++, d < c ? l++ : r--;
      if (k <= m) f.insert(c);
    }
  cout << f.size() << endl;
  for (it = f.begin(); it != f.end(); it++)
    printf("%.1f %.1f\n", it->x * 0.5, it->y * 0.5);
  return 0;
}
