#include <bits/stdc++.h>
using namespace std;
int gcd(int a, int b) { return b == 0 ? a : gcd(b, a % b); }
int n = 3;
int x[3], y[3];
int cx[3], cy[3];
set<pair<int, int>> have;
void solve() {
  int lx = x[0], hx = x[0];
  for (int i = (0); i < (n); ++i) lx = min(lx, x[i]), hx = max(hx, x[i]);
  int mx = x[0] + x[1] + x[2] - lx - hx;
  int ly = y[0], hy = y[0];
  for (int i = (0); i < (n); ++i) ly = min(ly, y[i]), hy = max(hy, y[i]);
  int my = y[0] + y[1] + y[2] - ly - hy;
  for (int i = (0); i < (n); ++i) cx[i] = x[i], cy[i] = y[i];
  for (int i = (0); i < (n); ++i) {
    while (true) {
      have.insert(make_pair(cx[i], cy[i]));
      if (cx[i] < mx)
        ++cx[i];
      else if (cx[i] > mx)
        --cx[i];
      else
        break;
    }
  }
  for (int i = (0); i < (n); ++i) {
    while (true) {
      have.insert(make_pair(cx[i], cy[i]));
      if (cy[i] < my)
        ++cy[i];
      else if (cy[i] > my)
        --cy[i];
      else
        break;
    }
  }
}
void run() {
  for (int i = (0); i < (n); ++i) scanf("%d%d", &x[i], &y[i]);
  solve();
  printf("%d\n", ((int)(have).size()));
  for (auto it = have.begin(); it != have.end(); ++it)
    printf("%d %d\n", it->first, it->second);
}
int main() {
  run();
  return 0;
}
