#include <bits/stdc++.h>
using namespace std;
typedef long long int ll;
typedef long double ld;
typedef vector<ll> vl;
typedef vector<vl> vvl;
typedef pair<ll, ll> pp;
typedef vector<pp> vp;
typedef map<pp, ll> ipi;
typedef map<pp, char> ipc;
typedef map<ll, ll> ii;
typedef set<ll> sl;
typedef multiset<ll> msl;
typedef map<char, ll> ci;
typedef set<pair<ll, ll>> sp;
const ll mod = 1e9 + 7;
const ll N = 2e5 + 1;
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(0);
  cout.tie(0);
  ll x0, y0;
  cin >> x0 >> y0;
  ll x1, y1;
  cin >> x1 >> y1;
  ll x2, y2;
  cin >> x2 >> y2;
  map<pp, ll> m;
  vp ans;
  vp tmp;
  tmp.emplace_back(x0, y0);
  tmp.emplace_back(x1, y1);
  tmp.emplace_back(x2, y2);
  sort(tmp.begin(), tmp.end());
  x0 = tmp[0].first, y0 = tmp[0].second;
  x1 = tmp[1].first, y1 = tmp[1].second;
  x2 = tmp[2].first, y2 = tmp[2].second;
  ans.emplace_back(x0, y0);
  m[{x0, y0}] = 1;
  ans.emplace_back(x1, y1);
  m[{x1, y1}] = 1;
  ans.emplace_back(x2, y2);
  m[{x2, y2}] = 1;
  ll t_x0 = x0, t_y0 = y0, t_x1 = x1, t_y1 = y1, t_x2 = x2, t_y2 = y2;
  vp ans2 = ans;
  map<pp, ll> m1;
  x0 = t_x0, x1 = t_x1, x2 = t_x2, y0 = t_y0, y1 = t_y1, y2 = t_y2;
  ans.clear();
  ans.emplace_back(x0, y0);
  m1[{x0, y0}] = 1;
  ans.emplace_back(x1, y1);
  m1[{x1, y1}] = 1;
  ans.emplace_back(x2, y2);
  m1[{x2, y2}] = 1;
  if (y0 > y1) {
    while (y1 < y0) {
      if (!m1[{x1, y1}]) ans.emplace_back(x1, y1);
      m1[{x1, y1}] = 1;
      y1++;
    }
  } else {
    while (y1 > y0) {
      if (!m1[{x1, y1}]) ans.emplace_back(x1, y1);
      m1[{x1, y1}] = 1;
      y1--;
    }
  }
  y1 = y0;
  if (x0 > x1) {
    while (x1 < x0) {
      if (!m1[{x1, y1}]) ans.emplace_back(x1, y1);
      m1[{x1, y1}] = 1;
      x1++;
    }
  } else {
    while (x1 > x0) {
      if (!m1[{x1, y1}]) ans.emplace_back(x1, y1);
      m1[{x1, y1}] = 1;
      x1--;
    }
  }
  x1 = x0;
  if (y2 > max(t_y1, t_y0)) {
    int f = 0;
    while (y2 > max(t_y1, t_y0)) {
      if (!m1[{x2, y2}]) {
        ans.emplace_back(x2, y2);
        m1[{x2, y2}] = 1;
        f = 1;
      }
      y2--;
    }
    if (f) y2 = max(t_y1, t_y0);
  } else {
    int f = 0;
    while (y2 < min(t_y1, t_y0)) {
      if (!m1[{x2, y2}]) {
        ans.emplace_back(x2, y2);
        m1[{x2, y2}] = 1;
        f = 1;
      }
      y2++;
    }
    if (f) y2 = min(t_y1, t_y0);
  }
  if (x2 > max(t_x1, t_x0)) {
    int f = 0;
    while (x2 > max(t_x1, t_x0)) {
      if (!m1[{x2, y2}]) {
        ans.emplace_back(x2, y2);
        m1[{x2, y2}] = 1;
        f = 1;
      }
      x2--;
    }
    if (f) x2 = max(t_x1, t_x0);
  } else {
    int f = 0;
    while (x2 < min(t_x1, t_x0)) {
      if (!m1[{x2, y2}]) {
        ans.emplace_back(x2, y2);
        m1[{x2, y2}] = 1;
        f = 1;
      }
      x2++;
    }
    if (f) x2 = min(t_x1, t_x0);
  }
  cout << ans.size() << "\n";
  for (auto i : ans) cout << i.first << " " << i.second << "\n";
  return 0;
}
