#include <bits/stdc++.h>
using namespace std;
const int MAXN = 200000 + 20;
pair<int, int> p[MAXN];
int n, k, first[MAXN], second[MAXN];
vector<pair<int, int> > CC;
void init() {
  scanf("%d%d", &n, &k);
  for (int i = 1; i <= n; ++i)
    scanf("%d%d", &first[i], &second[i]), p[i] = make_pair(first[i], second[i]);
  sort(p + 1, p + n + 1);
}
void calc(const pair<int, int> &c) {
  int cnt = 0;
  for (int i = 1, j = n; i <= n; ++i) {
    pair<int, int> np = make_pair(c.first - p[i].first, c.second - p[i].second);
    for (; j >= 1 && p[j] > np; --j)
      ;
    if (j >= 1 && p[j] == np)
      --j;
    else {
      ++cnt;
      if (cnt > k) return;
    }
  }
  CC.push_back(c);
}
void solve() {
  if (n <= k) puts("-1"), exit(0);
  for (int i = 1; i <= k + 1; ++i)
    for (int j = n - k; j <= n; ++j)
      calc(make_pair(p[i].first + p[j].first, p[i].second + p[j].second));
  sort(CC.begin(), CC.end());
  CC.erase(unique(CC.begin(), CC.end()), CC.end());
  cout << CC.size() << endl;
  for (int i = 0; i < (int)CC.size(); ++i)
    printf("%.10lf %.10lf\n", (double)CC[i].first / 2.0,
           (double)CC[i].second / 2.0);
}
int main() {
  init();
  solve();
  fclose(stdin);
  fclose(stdout);
  return 0;
}
