#include <bits/stdc++.h>
using namespace std;
const int MaxN = 210000;
int n, K;
pair<int, int> a[MaxN];
set<pair<int, int> > Ans;
void Init() {
  scanf("%d%d", &n, &K);
  for (int i = 1; i <= n; ++i) {
    scanf("%d%d", &a[i].first, &a[i].second);
    a[i].first *= 2;
    a[i].second *= 2;
  }
  sort(a + 1, a + n + 1);
}
inline pair<int, int> operator-(const pair<int, int> &a,
                                const pair<int, int> &b) {
  return make_pair(a.first - b.first, a.second - b.second);
}
void Print() {
  printf("%d\n", Ans.size());
  for (set<pair<int, int> >::iterator i = Ans.begin(); i != Ans.end(); ++i)
    printf("%.1lf %.1lf\n", (double)(i->first) / 2, (double)(i->second) / 2);
}
int main() {
  Init();
  if (n <= K)
    cout << -1 << endl;
  else {
    for (int i = 0; i <= K; ++i)
      for (int j = n + 1, s; j > i + 1 && (s = i + n - j + 1) <= K; --j) {
        int l = i + 1, r = j - 1;
        pair<int, int> p = make_pair(a[l].first + a[r].first >> 1,
                                     a[l].second + a[r].second >> 1),
                       L, R;
        while (l <= r) {
          L = p - a[l];
          R = a[r] - p;
          if (L == R)
            ++l, --r;
          else if (L > R)
            ++l, ++s;
          else
            --r, ++s;
        }
        if (s <= K) Ans.insert(p);
      }
    Print();
  }
  return 0;
}
