#include <bits/stdc++.h>
using namespace std;
pair<int, int> point[200005];
int n, k, cnt = 0;
pair<int, int> ans[200005];
void init() {
  scanf("%d%d", &n, &k);
  for (int i = 1; i <= n; i++) {
    int p, q;
    scanf("%d%d", &p, &q);
    point[i] = make_pair(p, q);
  }
  sort(point + 1, point + 1 + n);
}
bool check(int first, int second, int z, int z1) {
  pair<int, int> now1 = point[z], now2 = point[z1];
  int uu = 0, l = 1, r = n;
  while (l <= r && uu <= k) {
    pair<int, int> kk =
        make_pair(now1.first + now2.first, now1.second + now2.second);
    pair<int, int> kk1 = make_pair(point[l].first + point[r].first,
                                   point[l].second + point[r].second);
    if (kk == kk1)
      l++, r--;
    else {
      uu++;
      if (kk1 < kk)
        l++;
      else
        r--;
    }
  }
  return uu <= k;
}
void work() {
  if (k >= n) {
    printf("-1\n");
    exit(0);
  }
  if (check(1, n, 1, n))
    ans[++cnt] = make_pair(point[1].first + point[n].first,
                           point[1].second + point[n].second);
  for (int i = 1; i <= k + 1; i++)
    for (int j = n - k; j <= n; j++)
      if (check(i + 1, j - 1, i, j))
        ans[++cnt] = make_pair(point[i].first + point[j].first,
                               point[i].second + point[j].second);
  sort(ans + 1, ans + 1 + cnt);
  cnt = unique(ans + 1, ans + 1 + cnt) - ans - 1;
  printf("%d\n", cnt);
  for (int i = 1; i <= cnt; i++)
    printf("%.6lf %.6lf\n", (double)(ans[i].first) / 2.0,
           (double)(ans[i].second) / 2.0);
  return;
}
int main() {
  init();
  work();
  return 0;
}
