#include <bits/stdc++.h>
#pragma GCC optimize("Ofast,no-stack-protector,unroll-loops", \
                     "omit-frame-pointer", "inline")
#pragma GCC target( \
    "sse,sse2,sse3,ssse3,sse4,sse4.1,sse4.2,popcnt,abm,mmx,avx,avx2,fma,tune=native")
#pragma GCC option("arch=native", "no-zero-upper")
using namespace std;
const long long mod = (long long)(998244353);
const double eps = (1e-9);
const long long oo = (long long)(1e18);
void print(vector<pair<long long, long long> > p) {
  cout << (p.size()) << '\n';
  for (auto x : p) cout << x.first << ' ' << x.second << '\n';
  exit(0);
}
int main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  pair<long long, long long> a, b, c;
  cin >> a.first >> a.second;
  cin >> b.first >> b.second;
  cin >> c.first >> c.second;
  vector<pair<long long, long long> > x1;
  x1.push_back(a);
  x1.push_back(b);
  x1.push_back(c);
  a.second *= -1;
  b.second *= -1;
  c.second *= -1;
  vector<pair<long long, long long> > x2;
  x2.push_back(a);
  x2.push_back(b);
  x2.push_back(c);
  a.second *= -1;
  b.second *= -1;
  c.second *= -1;
  sort((x1).begin(), (x1).end());
  sort((x2).begin(), (x2).end());
  bool ok = 1;
  for (int i = 0; i < 2; i++)
    if (x1[i].second > x1[i + 1].second) ok = 0;
  vector<pair<long long, long long> > res;
  if (ok) {
    for (int i = x1[0].first; i <= x1[2].first; i++)
      res.push_back(pair<long long, long long>(i, x1[1].second));
    for (int i = x1[0].second; i < x1[1].second; i++)
      res.push_back(pair<long long, long long>(x1[0].first, i));
    for (int i = x1[1].second + 1; i <= x1[2].second; i++)
      res.push_back(pair<long long, long long>(x1[2].first, i));
    print(res);
  }
  ok = 1;
  for (int i = 0; i < 2; i++)
    if (x2[i].second > x2[i + 1].second) ok = 0;
  if (ok) {
    for (auto &p : x2) p.second *= -1;
    x1 = x2;
    for (int i = x1[0].first; i <= x1[2].first; i++)
      res.push_back(pair<long long, long long>(i, x1[1].second));
    for (int i = x1[2].second; i < x1[1].second; i++)
      res.push_back(pair<long long, long long>(x1[2].first, i));
    for (int i = x1[1].second + 1; i <= x1[0].second; i++)
      res.push_back(pair<long long, long long>(x1[0].first, i));
    print(res);
  }
  vector<int> xs;
  vector<int> ys;
  xs.push_back(a.first);
  xs.push_back(b.first);
  xs.push_back(c.first);
  ys.push_back(a.second);
  ys.push_back(b.second);
  ys.push_back(c.second);
  sort((xs).begin(), (xs).end());
  sort((ys).begin(), (ys).end());
  for (int i = xs[0]; i <= xs[2]; i++)
    res.push_back(pair<long long, long long>(i, ys[1]));
  if (x1[0] == pair<long long, long long>(xs[0], ys[0])) {
    for (int i = ys[0]; i < ys[1]; i++)
      res.push_back(pair<long long, long long>(xs[0], i));
    for (int i = ys[1] + 1; i <= ys[2]; i++)
      res.push_back(pair<long long, long long>(xs[1], i));
  } else if (x1[0] == pair<long long, long long>(xs[0], ys[2])) {
    for (int i = ys[0]; i < ys[1]; i++)
      res.push_back(pair<long long, long long>(xs[1], i));
    for (int i = ys[1] + 1; i <= ys[2]; i++)
      res.push_back(pair<long long, long long>(xs[0], i));
  } else {
    if (x1[1] == pair<long long, long long>(xs[1], ys[2])) {
      for (int i = ys[0]; i < ys[1]; i++)
        res.push_back(pair<long long, long long>(xs[2], i));
      for (int i = ys[1] + 1; i <= ys[2]; i++)
        res.push_back(pair<long long, long long>(xs[1], i));
    } else {
      for (int i = ys[0]; i < ys[1]; i++)
        res.push_back(pair<long long, long long>(xs[1], i));
      for (int i = ys[1] + 1; i <= ys[2]; i++)
        res.push_back(pair<long long, long long>(xs[2], i));
    }
  }
  print(res);
  return 0;
}
