#include <bits/stdc++.h>
using namespace std;
pair<int, int> A[4200010], B[400010], S[4200010];
int AL, BL, SL;
int n, m;
pair<int, int> a[200010];
vector<pair<int, int> > S0;
int main() {
  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);
  for (int k = 0; k <= m; k++) {
    BL = 0;
    for (int i = 0; i < n; i++) {
      int j = n - i - 1 - k;
      if (0 <= j && j < n)
        B[BL++] = make_pair(a[i].first + a[j].first, a[i].second + a[j].second);
      if (!k) continue;
      j = n - i - 1 + k;
      if (0 <= j && j < n)
        B[BL++] = make_pair(a[i].first + a[j].first, a[i].second + a[j].second);
    }
    sort(B, B + BL);
    merge(A, A + AL, B, B + BL, S);
    SL = AL + BL;
    AL = SL;
    memcpy(A, S, (sizeof(pair<int, int>)) * AL);
    for (int i = 0, j; i < AL; i = j) {
      for (j = i; j < AL && A[i] == A[j]; j++)
        ;
      if (j - i >= n - k) S0.push_back(A[i]);
    }
  }
  sort(S0.begin(), S0.end());
  S0.erase(unique(S0.begin(), S0.end()), S0.end());
  printf("%d\n", (int)S0.size());
  for (vector<pair<int, int> >::iterator i = S0.begin(); i != S0.end(); i++)
    printf("%.9lf %.9lf\n", i->first / 2.0, i->second / 2.0);
}
