#include <bits/stdc++.h>
using namespace std;
const int N = 200000 + 10;
pair<int, int> a[N];
bool check(const pair<int, int>& center, int n, int m) {
  int cnt = 0;
  for (int i = 0, j = n - 1; i <= j;) {
    if (a[i].first + a[j].first < center.first) {
      ++i;
      ++cnt;
    } else if (a[i].first + a[j].first > center.first) {
      --j;
      ++cnt;
    } else {
      if (a[i].second + a[j].second < center.second) {
        ++i;
        ++cnt;
      } else if (a[i].second + a[j].second > center.second) {
        --j;
        ++cnt;
      } else {
        ++i;
        --j;
      }
    }
    if (cnt > m) return false;
  }
  return true;
}
int main() {
  int n, m;
  scanf("%d %d", &n, &m);
  for (int i = 0; i < n; i++) {
    scanf("%d %d", &a[i].first, &a[i].second);
  }
  if (m >= n) {
    puts("-1");
    return 0;
  }
  sort(a, a + n);
  vector<pair<int, int> > ret;
  for (int i = 0; i <= m; ++i) {
    for (int j = n - m - 1; j < n; ++j) {
      pair<int, int> center =
          pair<int, int>(a[i].first + a[j].first, a[i].second + a[j].second);
      if (check(center, n, m)) {
        ret.push_back(center);
      }
    }
  }
  sort(ret.begin(), ret.end());
  ret.erase(unique(ret.begin(), ret.end()), ret.end());
  printf("%d\n", (int)(ret.size()));
  for (int i = 0; i < (int)(ret.size()); ++i) {
    printf("%.1f %.1f\n", ret[i].first / 2.0, ret[i].second / 2.0);
  }
  return 0;
}
