#include <bits/stdc++.h>
using namespace std;
template <typename Tp>
inline void read(Tp &x) {
  static char c;
  static bool neg;
  x = 0, c = getchar(), neg = false;
  for (; !isdigit(c); c = getchar()) {
    if (c == '-') {
      neg = true;
    }
  }
  for (; isdigit(c); c = getchar()) {
    x = x * 10 + c - '0';
  }
  if (neg) {
    x = -x;
  }
}
pair<int, int> a[3];
vector<pair<int, int> > ans;
int main() {
  read(a[0].first), read(a[0].second), read(a[1].first), read(a[1].second),
      read(a[2].first), read(a[2].second);
  sort(a, a + 3);
  int mx = std::max({a[0].second, a[1].second, a[2].second}),
      mn = std::min({a[0].second, a[1].second, a[2].second}),
      sum = a[0].second + a[1].second + a[2].second;
  int mid = sum - mx - mn;
  for (int i = a[0].first; i <= a[2].first; ++i) {
    ans.emplace_back((pair<int, int>){i, mid});
  }
  for (int i = 0; i < 3; ++i) {
    if (a[i].second > mid) {
      for (int j = mid + 1; j <= a[i].second; ++j) {
        ans.emplace_back((pair<int, int>){a[i].first, j});
      }
    } else if (a[i].second < mid) {
      for (int j = mid - 1; j >= a[i].second; --j) {
        ans.emplace_back((pair<int, int>){a[i].first, j});
      }
    }
  }
  sort(ans.begin(), ans.end());
  ans.erase(unique(ans.begin(), ans.end()), ans.end());
  printf("%lu\n", ans.size());
  for (const auto &p : ans) {
    printf("%d %d\n", p.first, p.second);
  }
}
