#include <bits/stdc++.h>
using namespace std;
struct pp {
  int l, r;
} s[2000000 + 10];
vector<pair<int, int> > v;
bool cmp(pp a, pp b) {
  if (a.l == b.l) {
    return a.r > b.r;
  }
  return a.l < b.l;
}
int main() {
  int n, k;
  while (~scanf("%d%d", &n, &k)) {
    for (int i = 0; i < n; i++) {
      int l, r;
      scanf("%d%d", &l, &r);
      s[2 * i].l = l;
      s[2 * i].r = 1;
      s[2 * i + 1].l = r;
      s[2 * i + 1].r = -1;
    }
    sort(s, s + 2 * n, cmp);
    for (int i = 1; i < 2 * n; i++) {
      s[i].r += s[i - 1].r;
    }
    for (int i = 0; i < 2 * n; i++) {
      if (s[i].r >= k) {
        int x = s[i++].l, y;
        while (s[i].r >= k) i++;
        y = s[i].l;
        v.push_back(make_pair(x, y));
      }
    }
    int len = v.size();
    printf("%d\n", len);
    for (int i = 0; i < v.size(); i++) {
      printf("%d %d\n", v[i].first, v[i].second);
    }
  }
}
