#include <bits/stdc++.h>
using namespace std;
int main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  int x1, y1, x2, y2, x3, y3;
  cin >> x1 >> y1 >> x2 >> y2 >> x3 >> y3;
  pair<int, int> h1 = {x1, y1};
  pair<int, int> h2 = {x2, y2};
  pair<int, int> h3 = {x3, y3};
  vector<pair<int, int> > d;
  d.push_back(h1);
  d.push_back(h2);
  d.push_back(h3);
  sort(d.begin(), d.end());
  if ((d[2].second >= d[1].second && d[1].second >= d[0].second) ||
      (d[2].second <= d[1].second && d[1].second <= d[0].second)) {
    int cnt = (d[2].first - d[0].first + 1) + abs(d[2].second - d[0].second);
    set<pair<int, int> > res;
    res.insert({d[0].first, d[0].second});
    for (int i = d[0].first + 1; i < d[1].first; ++i)
      res.insert({i, d[0].second});
    res.insert({d[1].first, d[0].second});
    if (d[1].second >= d[0].second) {
      for (int i = d[0].second + 1; i < d[1].second; ++i)
        res.insert({d[1].first, i});
    } else {
      for (int i = d[0].second - 1; i > d[1].second; --i)
        res.insert({d[1].first, i});
    }
    res.insert({d[1].first, d[1].second});
    for (int i = d[1].first + 1; i < d[2].first; ++i)
      res.insert({i, d[1].second});
    res.insert({d[2].first, d[1].second});
    if (d[2].second >= d[1].second) {
      for (int i = d[1].second + 1; i < d[2].second; ++i)
        res.insert({d[2].first, i});
    } else {
      for (int i = d[1].second - 1; i > d[2].second; --i)
        res.insert({d[2].first, i});
    }
    res.insert({d[2].first, d[2].second});
    cout << res.size() << '\n';
    for (auto e = res.begin(); e != res.end(); ++e) {
      pair<int, int> now = *e;
      cout << now.first << ' ' << now.second << '\n';
    }
    exit(0);
  }
  int cnt = (d[2].first - d[0].first + 1);
  if (d[0].second >= d[2].second)
    cnt += abs(d[1].second - d[2].second);
  else
    cnt += abs(d[1].second - d[0].second);
  set<pair<int, int> > res;
  if ((d[0].second >= d[2].second && d[0].second <= d[1].second) ||
      (d[0].second <= d[2].second && d[0].second >= d[1].second)) {
    res.insert({d[0].first, d[0].second});
    for (int i = d[0].first + 1; i < d[2].first; ++i)
      res.insert({i, d[0].second});
    res.insert({d[2].first, d[0].second});
    if (d[1].second >= d[0].second) {
      for (int i = d[0].second + 1; i < d[1].second; ++i)
        res.insert({d[1].first, i});
    } else {
      for (int i = d[0].second - 1; i > d[1].second; --i)
        res.insert({d[1].first, i});
    }
    res.insert({d[1].first, d[1].second});
    if (d[2].second >= d[0].second) {
      for (int i = d[0].second + 1; i < d[2].second; ++i)
        res.insert({d[2].first, i});
    } else {
      for (int i = d[0].second - 1; i > d[2].second; --i)
        res.insert({d[2].first, i});
    }
    res.insert({d[2].first, d[2].second});
  } else {
    res.insert({d[2].first, d[2].second});
    for (int i = d[2].first - 1; i > d[0].first; --i)
      res.insert({i, d[2].second});
    res.insert({d[0].first, d[2].second});
    if (d[1].second >= d[2].second) {
      for (int i = d[2].second + 1; i < d[1].second; ++i)
        res.insert({d[1].first, i});
    } else {
      for (int i = d[2].second - 1; i > d[1].second; --i)
        res.insert({d[1].first, i});
    }
    res.insert({d[1].first, d[1].second});
    if (d[0].second >= d[2].second) {
      for (int i = d[2].second + 1; i < d[0].second; ++i)
        res.insert({d[0].first, i});
    } else {
      for (int i = d[2].second - 1; i > d[0].second; --i)
        res.insert({d[0].first, i});
    }
    res.insert({d[0].first, d[0].second});
  }
  cout << res.size() << '\n';
  for (auto e = res.begin(); e != res.end(); ++e) {
    pair<int, int> now = *e;
    cout << now.first << ' ' << now.second << '\n';
  }
  return 0;
}
