#include <bits/stdc++.h>
using namespace std;
const long long INF = 9223372036854775807ll;
const int inf = 2147483647, dx[] = {1, -1, 0, 0}, dy[] = {0, 0, 1, -1};
pair<int, int> a, b, c;
bool ok[1005][1005], ok2[1005][1005], ok3[1005][1005];
vector<pair<int, int> > sol;
bool check(pair<int, int> x) {
  return x.first >= 0 && x.first <= 1000 && x.second >= 0 && x.second <= 1000 &&
         !ok2[x.first][x.second];
}
bool isinside(pair<int, int> x, pair<int, int> y, pair<int, int> c) {
  if (c.first >= min(x.first, y.first) && c.first <= max(x.first, y.first) &&
      c.second >= min(x.second, y.second) &&
      c.second <= max(x.second, y.second))
    return true;
  return false;
}
pair<int, int> lee(pair<int, int> start) {
  memset(ok2, 0, sizeof(ok2));
  queue<pair<int, int> > q;
  ok2[start.first][start.second] = 1;
  q.push(start);
  while (!q.empty()) {
    pair<int, int> now = q.front();
    q.pop();
    for (int d = 0; d < 4; ++d) {
      pair<int, int> nxt = now;
      nxt.first += dx[d];
      nxt.second += dy[d];
      if (check(nxt)) {
        if (ok[nxt.first][nxt.second]) return nxt;
        ok2[nxt.first][nxt.second] = 1;
        q.push(nxt);
      }
    }
  }
  return {0, 0};
}
void add(pair<int, int> x) {
  if (!ok3[x.first][x.second]) {
    ok3[x.first][x.second] = 1;
    sol.push_back(x);
  }
}
void addsol(pair<int, int> x, pair<int, int> y) {
  if (x.first > y.first) swap(x, y);
  for (int i = x.first; i <= y.first; ++i) add(make_pair(i, x.second));
  int xx = y.first;
  for (int i = min(x.second, y.second); i <= max(x.second, y.second); ++i)
    add(make_pair(xx, i));
}
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  cout.tie(NULL);
  cin >> a.first >> a.second >> b.first >> b.second >> c.first >> c.second;
  if (!isinside(b, c, a)) {
  } else if (!isinside(a, c, b)) {
    pair<int, int> x = a;
    pair<int, int> y = b;
    pair<int, int> z = c;
    a = y;
    b = x;
    c = z;
  } else {
    pair<int, int> x = a;
    pair<int, int> y = b;
    pair<int, int> z = c;
    a = z;
    b = x;
    c = y;
  }
  for (int i = min(b.first, c.first); i <= max(b.first, c.first); ++i)
    for (int j = min(b.second, c.second); j <= max(b.second, c.second); ++j)
      ok[i][j] = 1;
  pair<int, int> now = lee(a);
  addsol(a, now);
  addsol(b, now);
  addsol(now, c);
  cout << sol.size() << "\n";
  for (auto x : sol) cout << x.first << " " << x.second << "\n";
  return 0;
}
