#include <bits/stdc++.h>
using namespace std;
int m[1005][1005];
map<pair<int, int>, int> used;
void color_m(const vector<int>& a, const vector<int>& b) {
  int x1 = min(a[0], b[0]), x2 = max(a[0], b[0]), y1 = min(a[1], b[1]),
      y2 = max(a[1], b[1]);
  for (int i = x1; i <= x2; i++) {
    for (int j = y1; j <= y2; j++) {
      m[i][j]++;
    }
  }
}
int m_dist(const vector<int>& a, const vector<int>& b) {
  return abs(a[0] - b[0]) + abs(a[1] - b[1]);
}
void find_path(vector<int>& a, vector<int>& p) {
  if (a[0] > p[0]) {
    for (int x = a[0]; x >= p[0]; x--) {
      if (!used[pair<int, int>(x, a[1])]) {
        cout << x << " " << a[1] << endl;
        used[pair<int, int>(x, a[1])] = 1;
      }
    }
  } else {
    for (int x = a[0]; x <= p[0]; x++) {
      if (!used[pair<int, int>(x, a[1])]) {
        cout << x << " " << a[1] << endl;
        used[pair<int, int>(x, a[1])] = 1;
      }
    }
  }
  if (a[1] > p[1]) {
    for (int y = a[1]; y >= p[1]; y--) {
      if (!used[pair<int, int>(p[0], y)]) {
        cout << p[0] << " " << y << endl;
        used[pair<int, int>(p[0], y)] = 1;
      }
    }
  } else {
    for (int y = a[1]; y <= p[1]; y++) {
      if (!used[pair<int, int>(p[0], y)]) {
        cout << p[0] << " " << y << endl;
        used[pair<int, int>(p[0], y)] = 1;
      }
    }
  }
}
int main(int argc, char const* argv[]) {
  cout.sync_with_stdio(0);
  cin.tie(0);
  vector<vector<int>> c(3);
  for (int i = 0; i < 3; i++) {
    int x, y;
    cin >> x >> y;
    c[i].push_back(x);
    c[i].push_back(y);
  }
  color_m(c[0], c[1]);
  color_m(c[0], c[2]);
  color_m(c[1], c[2]);
  vector<int> p(2);
  for (int i = 0; i <= 1000; i++) {
    for (int j = 0; j <= 1000; j++) {
      if (m[i][j] == 3) {
        p[0] = i, p[1] = j;
      }
    }
  }
  cout << m_dist(p, c[0]) + m_dist(p, c[1]) + m_dist(p, c[2]) + 1 << endl;
  cout << p[0] << " " << p[1] << endl;
  used[pair<int, int>(p[0], p[1])] = 1;
  find_path(c[0], p);
  find_path(c[1], p);
  find_path(c[2], p);
  return 0;
}
