#include <bits/stdc++.h>
using namespace std;
long long i, j;
class node {
 public:
  long long x;
  long long y;
  long long sum() { return x + y; }
  void coutt() { cout << x << " " << y << endl; }
};
void swa(node &a, node &b) {
  if (a.x > b.x) {
    swap(a.x, b.x);
    swap(a.y, b.y);
  }
}
void swap(node &a, node &b) {
  swap(a.x, b.x);
  swap(a.y, b.y);
}
map<char, bool> vis;
int main() {
  node a, b, c;
  cin >> a.x >> a.y;
  cin >> b.x >> b.y;
  cin >> c.x >> c.y;
  swa(a, b);
  swa(a, c);
  swa(b, c);
  vis['a'] = true;
  set<pair<long long, long long> > v;
  for (i = a.x; i <= min(c.x, b.x); i++) {
    v.insert({i, a.y});
  }
  if (b.x > c.x && c.y >= a.y)
    for (i = a.y + 1; i <= c.y; i++) {
      v.insert({c.x, i});
      vis['c'] = true;
    }
  if (b.x > c.x && c.y < a.y)
    for (i = a.y - 1; i >= c.y; i--) {
      v.insert({c.x, i});
      vis['c'] = true;
    }
  if (b.x <= c.x && b.y >= a.y)
    for (i = a.y + 1; i <= b.y; i++) {
      v.insert({b.x, i});
    }
  if (b.x <= c.x && b.y < a.y)
    for (i = a.y - 1; i >= b.y; i--) {
      v.insert({b.x, i});
    }
  if (vis['c'] == true) {
    swap(b, c);
  }
  if (c.y == a.y) {
    for (i = b.x + 1; i <= c.x; i++) v.insert({i, a.y});
  } else {
    if (c.y > a.y) {
      for (i = a.y; i <= c.y; i++) {
        v.insert({b.x, i});
      }
    } else {
      for (i = c.y; i <= a.y; i++) {
        v.insert({b.x, i});
      }
    }
    for (i = c.x; i >= b.x; i--) {
      v.insert({i, c.y});
    }
  }
  cout << v.size() << endl;
  for (auto x : v) {
    cout << x.first << " " << x.second << endl;
  }
}
