#include <bits/stdc++.h>
using namespace std;
const int MAXN = 200000;
pair<long long, long long> lis[MAXN + 10], res[MAXN + 10];
int rcnt;
int main() {
  int n, x, y, k;
  scanf("%d%d", &n, &k);
  for (int i = 1; i <= n; i++) {
    scanf("%d%d", &x, &y);
    x *= 2, y *= 2;
    lis[i] = make_pair(1ll * x, 1ll * y);
  }
  sort(lis + 1, lis + 1 + n);
  n = unique(lis + 1, lis + 1 + n) - lis - 1;
  if (k >= n) {
    printf("-1\n");
    return 0;
  }
  for (int i = 1; i <= k + 1; i++) {
    for (int j = n - k; j <= n; j++) {
      pair<long long, long long> cent =
          make_pair((lis[i].first + lis[j].first) >> 1,
                    (lis[i].second + lis[j].second) >> 1);
      int cnt = 0;
      for (int t = 1, tar = n; t <= n && cnt <= k; t++) {
        pair<long long, long long> nex = make_pair(
            cent.first * 2 - lis[t].first, cent.second * 2 - lis[t].second);
        if (nex <= lis[t]) break;
        while (tar && lis[tar] > nex) tar--;
        if (!tar || lis[tar] != nex) cnt++;
      }
      for (int t = n, tar = 1; t >= 1 && cnt <= k; t--) {
        pair<long long, long long> nex = make_pair(
            cent.first * 2 - lis[t].first, cent.second * 2 - lis[t].second);
        if (nex >= lis[t]) break;
        while (tar <= n && lis[tar] < nex) tar++;
        if (tar > n || lis[tar] != nex) cnt++;
      }
      if (cnt <= k) res[++rcnt] = cent;
    }
  }
  sort(res + 1, res + 1 + rcnt);
  rcnt = unique(res + 1, res + 1 + rcnt) - res - 1;
  printf("%d\n", rcnt);
  for (int i = 1; i <= rcnt; i++)
    printf("%.7f %.7f\n", res[i].first * 0.5, res[i].second * 0.5);
  return 0;
}
