#include <bits/stdc++.h>
using namespace std;
int n, k;
pair<int, int> a[200000];
int check(int x, int y) {
  int lp = 0, rp = n - 1, c = 0;
  while (lp <= rp) {
    int x1 = a[lp].first, y1 = a[lp].second, x2 = a[rp].first,
        y2 = a[rp].second;
    if (x1 + x2 == 2 * x and y1 + y2 == 2 * y) {
      lp++;
      rp--;
    } else if (make_pair(x1 + x2, y1 + y2) > make_pair(2 * x, 2 * y)) {
      rp--;
      c++;
    } else {
      lp++;
      c++;
    }
  }
  if (c <= k)
    return 1;
  else
    return 0;
}
int main() {
  ios::sync_with_stdio(false);
  cin >> n >> k;
  for (int(i) = 0; (i) < (n); (i)++) {
    int t1, t2;
    cin >> t1 >> t2;
    a[i] = make_pair(2 * t1, 2 * t2);
  }
  sort(a, a + n);
  if (n <= k) {
    cout << -1 << "\n";
    return 0;
  }
  vector<pair<int, int> > v, v2;
  for (int(i) = 0; (i) < (k + 1); (i)++)
    for (int(j) = (n - k - 1); (j) < (n); (j)++) {
      if (check((a[i].first + a[j].first) / 2, (a[i].second + a[j].second) / 2))
        v.push_back(make_pair((a[i].first + a[j].first) / 2,
                              (a[i].second + a[j].second) / 2));
    }
  sort(v.begin(), v.end());
  for (int(i) = 0; (i) < (v.size()); (i)++)
    if (i == 0 or v[i] != v[i - 1]) v2.push_back(v[i]);
  cout << v2.size() << "\n";
  for (int(i) = 0; (i) < (v2.size()); (i)++)
    cout << setprecision(10) << 1.0 * v2[i].first / 2 << " "
         << 1.0 * v2[i].second / 2 << "\n";
  return 0;
}
