#include <bits/stdc++.h>
using namespace std;
clock_t __stt;
inline void TStart() { __stt = clock(); }
inline void TReport() {
  printf("\nTaken Time : %.3lf sec\n",
         (double)(clock() - __stt) / CLOCKS_PER_SEC);
}
template <typename T>
T MIN(T a, T b) {
  return a < b ? a : b;
}
template <typename T>
T MAX(T a, T b) {
  return a > b ? a : b;
}
template <typename T>
T ABS(T a) {
  return a > 0 ? a : (-a);
}
template <typename T>
void UMIN(T &a, T b) {
  if (b < a) a = b;
}
template <typename T>
void UMAX(T &a, T b) {
  if (b > a) a = b;
}
pair<int, int> p[3];
int dis(pair<int, int> A, pair<int, int> B) {
  return ABS(A.first - B.first) + ABS(A.second - B.second);
}
vector<pair<int, int> > ps;
void getpath(pair<int, int> S, pair<int, int> T) {
  ps.push_back(S);
  if (S == T) return;
  if (S.first < T.first) {
    ++S.first;
    getpath(S, T);
  } else if (S.first > T.first) {
    --S.first;
    getpath(S, T);
  } else if (S.second < T.second) {
    ++S.second;
    getpath(S, T);
  } else {
    --S.second;
    getpath(S, T);
  }
}
int main() {
  int i, j, k;
  for (i = 0; i < 3; ++i) {
    scanf("%d%d", &p[i].first, &p[i].second);
  }
  int res = 2000000000;
  pair<int, int> RC;
  UMIN(res, dis(p[0], p[1]) - 1 + dis(p[0], p[2]) - 1 + 3);
  UMIN(res, dis(p[1], p[2]) + dis(p[1], p[0]) + 1);
  UMIN(res, dis(p[2], p[1]) + dis(p[0], p[2]) + 1);
  for (i = 0; i <= 1005; ++i) {
    for (j = 0; j <= 1005; ++j) {
      pair<int, int> C = make_pair(i, j);
      if (C == p[0] || C == p[1] || C == p[2]) continue;
      UMIN(res, dis(C, p[0]) - 1 + dis(C, p[1]) - 1 + dis(C, p[2]) - 1 + 4);
    }
  }
  if (dis(p[0], p[1]) - 1 + dis(p[0], p[2]) - 1 + 3 == res) RC = p[0];
  if (dis(p[1], p[2]) + dis(p[1], p[0]) + 1 == res) RC = p[1];
  if (dis(p[2], p[1]) + dis(p[0], p[2]) + 1 == res) RC = p[2];
  for (i = 0; i <= 1005; ++i) {
    for (j = 0; j <= 1005; ++j) {
      pair<int, int> C = make_pair(i, j);
      if (C == p[0] || C == p[1] || C == p[2]) continue;
      if (res == dis(C, p[0]) - 1 + dis(C, p[1]) - 1 + dis(C, p[2]) - 1 + 4)
        RC = C;
    }
  }
  getpath(RC, p[0]);
  getpath(RC, p[1]);
  getpath(RC, p[2]);
  sort(ps.begin(), ps.end());
  ps.erase(unique(ps.begin(), ps.end()), ps.end());
  printf("%d\n", res);
  for (i = 0; i < (int)ps.size(); ++i) {
    printf("%d %d\n", ps[i].first, ps[i].second);
  }
  return 0;
}
