#include <bits/stdc++.h>
using namespace std;
template <typename T>
std::ostream &operator<<(std::ostream &out, vector<T> &v) {
  for (typename vector<T>::size_type i = 0; i < v.size(); ++i)
    out << v[i] << " ";
  out << "\n";
  return out;
}
template <typename T>
std::ostream &operator<<(std::ostream &out, set<T> &s) {
  for (auto e : s) out << e << " ";
  out << "\n";
  return out;
}
template <typename T, typename N>
std::ostream &operator<<(std::ostream &out, pair<T, N> &p) {
  out << "(" << p.first << ", " << p.second << ") ";
  return out;
}
template <typename T, typename N>
std::ostream &operator<<(std::ostream &out, vector<pair<T, N> > &v) {
  for (size_t i = 0; i < v.size(); ++i) cout << v[i];
  out << "\n";
  return out;
}
template <typename T, typename N>
std::ostream &operator<<(std::ostream &out, set<pair<T, N> > &s) {
  for (auto p : s) out << p;
  out << "\n";
  return out;
}
template <typename T>
std::ostream &operator<<(std::ostream &out, vector<vector<T> > &v) {
  for (size_t i = 0; i < v.size(); ++i) {
    for (size_t j = 0; j < v[i].size(); ++j) {
      out << v[i][j] << " ";
    }
    out << "\n";
  }
  return out;
}
template <typename T>
std::ostream &operator<<(std::ostream &out, vector<set<T> > &v) {
  for (size_t i = 0; i < v.size(); ++i) {
    out << v[i];
  }
  out << "\n";
  return out;
}
set<pair<int, int> > plots;
void print_path(int x, int y, int xm, int ym) {
  int xx, yy;
  xx = x;
  if (x < xm) {
    while (xx <= xm) {
      plots.insert(make_pair(xx, y));
      ++xx;
    }
  } else {
    while (xx >= xm) {
      plots.insert(make_pair(xx, y));
      --xx;
    }
  }
  if (y < ym) {
    yy = y + 1;
    while (yy <= ym) {
      plots.insert(make_pair(xm, yy));
      ++yy;
    }
  } else {
    yy = y - 1;
    while (yy >= ym) {
      plots.insert(make_pair(xm, yy));
      --yy;
    }
  }
}
void solve() {
  int xa, ya, xb, yb, xc, yc;
  cin >> xa >> ya >> xb >> yb >> xc >> yc;
  int path_len = max(xa, max(xb, xc)) - min(xa, min(xb, xc)) +
                 max(ya, max(yb, yc)) - min(ya, min(yb, yc)) + 1;
  vector<int> x = {xa, xb, xc}, y = {ya, yb, yc};
  sort(x.begin(), x.end());
  sort(y.begin(), y.end());
  int xm = x[1];
  int ym = y[1];
  print_path(xa, ya, xm, ym);
  print_path(xb, yb, xm, ym);
  print_path(xc, yc, xm, ym);
  cout << path_len << "\n";
  for (auto p : plots) {
    cout << p.first << " " << p.second << "\n";
  }
  return;
}
int main() {
  std::ios::sync_with_stdio(false);
  cin.tie(0);
  cout.tie(0);
  int t;
  t = 1;
  while (t--) {
    solve();
  }
  return 0;
}
