#include <bits/stdc++.h>
using namespace std;
struct point {
  int x;
  int y;
};
struct less_point {
 public:
  bool operator()(point a, point b) {
    if (a.x < b.x) {
      return true;
    }
    if (b.x < a.x) {
      return false;
    }
    if (a.y < b.y) {
      return true;
    }
    return false;
  }
};
int main() {
  vector<point> points(3);
  cin >> points[0].x >> points[0].y >> points[1].x >> points[1].y >>
      points[2].x >> points[2].y;
  sort(points.begin(), points.end(),
       [](point a, point b) { return a.x < b.x; });
  set<point, less_point> solution;
  for (int i = points[0].x; i <= points[1].x; i++) {
    solution.insert(point{i, points[0].y});
  }
  int start, end;
  if (points[0].y > points[1].y) {
    start = points[1].y;
    end = points[0].y;
  } else {
    start = points[0].y;
    end = points[1].y;
  }
  for (int i = start; i <= end; i++) {
    solution.insert(point{points[1].x, i});
  }
  if (points[1].y > points[2].y) {
    start = points[2].y;
    end = points[1].y;
  } else {
    start = points[1].y;
    end = points[2].y;
  }
  for (int i = start; i <= end; i++) {
    solution.insert(point{points[1].x, i});
  }
  for (int i = points[1].x; i <= points[2].x; i++) {
    solution.insert(point{i, points[2].y});
  }
  cout << solution.size() << endl;
  for (auto it = solution.begin(); it != solution.end(); it++) {
    cout << it->x << " " << it->y << endl;
  }
}
