#include <bits/stdc++.h>
using namespace std;
set<pair<int, int>> paths;
int dist(int a, int b, int c, int d) { return abs(a - c) + abs(b - d); }
void getpaths(int a, int b, int c, int d) {
  while (a != c) {
    if (a < c)
      a++;
    else if (a > c)
      a--;
    paths.insert(make_pair(a, b));
  }
  while (b != d) {
    if (b < d)
      b++;
    else if (b > d)
      b--;
    paths.insert(make_pair(a, b));
  }
}
int main() {
  int ax, ay;
  int bx, by;
  int cx, cy;
  scanf("%d %d", &ax, &ay);
  scanf("%d %d", &bx, &by);
  scanf("%d %d", &cx, &cy);
  int tr_x = max(ax, bx);
  int tr_y = max(ay, by);
  int bl_x = min(ax, bx);
  int bl_y = min(ay, by);
  int k = 9999999;
  int kx, ky;
  for (int i = bl_x; i <= tr_x; i++) {
    for (int j = bl_y; j <= tr_y; j++) {
      if (dist(i, j, cx, cy) < k) {
        k = dist(i, j, cx, cy);
        kx = i, ky = j;
      }
    }
  }
  paths.insert(make_pair(ax, ay));
  paths.insert(make_pair(bx, by));
  paths.insert(make_pair(cx, cy));
  getpaths(ax, ay, kx, ky);
  getpaths(kx, ky, bx, by);
  getpaths(kx, ky, cx, cy);
  printf("%d\n", dist(ax, ay, bx, by) - 1 + dist(kx, ky, cx, cy) - 1 + 3);
  for (auto it = paths.begin(); it != paths.end(); ++it) {
    printf("%d %d\n", it->first, it->second);
  }
}
