#include <bits/stdc++.h>
using namespace std;
using ll = long long;
constexpr ll INF = 0x3FFFFFFFFFFFFFFF;
ll dist(pair<ll, ll> a, pair<ll, ll> b) {
  return abs(a.first - b.first) + abs(a.second - b.second);
}
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(nullptr);
  vector<pair<ll, ll>> in(3);
  for (ll i = 0; i < 3; i++) {
    ll x, y;
    cin >> x >> y;
    in[i] = {x, y};
  }
  sort(in.begin(), in.end());
  set<pair<ll, ll>> res = {in[0]};
  ll x = in[0].first;
  ll y = in[0].second;
  while (true) {
    if (dist({x - 1, y}, in[1]) < dist({x, y}, in[1]) &&
        dist({x - 1, y}, in[2]) < dist({x, y}, in[2])) {
      x--;
      res.insert({x, y});
    } else if (dist({x + 1, y}, in[1]) < dist({x, y}, in[1]) &&
               dist({x + 1, y}, in[2]) < dist({x, y}, in[2])) {
      x++;
      res.insert({x, y});
    } else if (dist({x, y - 1}, in[1]) < dist({x, y}, in[1]) &&
               dist({x, y - 1}, in[2]) < dist({x, y}, in[2])) {
      y--;
      res.insert({x, y});
    } else if (dist({x, y + 1}, in[1]) < dist({x, y}, in[1]) &&
               dist({x, y + 1}, in[2]) < dist({x, y}, in[2])) {
      y++;
      res.insert({x, y});
    } else {
      break;
    }
  }
  auto fill = [&](pair<ll, ll> dest) {
    ll cx = x;
    ll cy = y;
    while (true) {
      if (dist({cx - 1, cy}, dest) < dist({cx, cy}, dest)) {
        cx--;
        res.insert({cx, cy});
      } else if (dist({cx + 1, cy}, dest) < dist({cx, cy}, dest)) {
        cx++;
        res.insert({cx, cy});
      } else if (dist({cx, cy - 1}, dest) < dist({cx, cy}, dest)) {
        cy--;
        res.insert({cx, cy});
      } else if (dist({cx, cy + 1}, dest) < dist({cx, cy}, dest)) {
        cy++;
        res.insert({cx, cy});
      } else {
        break;
      }
    }
  };
  fill(in[1]);
  fill(in[2]);
  cout << res.size() << endl;
  for (auto e : res) {
    cout << e.first << " " << e.second << endl;
  }
}
