#include <bits/stdc++.h>
using namespace std;
pair<int, int> v[200000], ans;
set<pair<int, int> > res;
void getans(int l, int r, int k, bool p) {
  if (l > r) {
    res.insert(ans);
    return;
  }
  if (k) {
    getans(l, r - 1, k - 1, p);
    getans(l + 1, r, k - 1, p);
  }
  if (!p && (v[l].first + v[r].first != ans.first ||
             v[l].second + v[r].second != ans.second))
    return;
  if (p) {
    ans.first = v[l].first + v[r].first, ans.second = v[l].second + v[r].second;
    if (res.find(ans) != res.end()) return;
  }
  for (; l <= r && v[l].first + v[r].first == ans.first &&
         v[l].second + v[r].second == ans.second;
       l++, r--)
    ;
  getans(l, r, k, false);
}
int main() {
  int n, k, i;
  scanf("%d%d", &n, &k);
  if (k >= n) {
    printf("-1\n");
    return 0;
  }
  for (i = 0; i < n; i++) scanf("%d%d", &v[i].first, &v[i].second);
  sort(v, v + n);
  res.clear();
  getans(0, n - 1, k, true);
  printf("%d\n", res.size());
  set<pair<int, int> >::iterator it;
  for (it = res.begin(); it != res.end(); it++)
    printf("%.1lf %.1lf\n", it->first / 2.0, it->second / 2.0);
  return 0;
}
