#include <bits/stdc++.h>
using namespace std;
pair<int, int> pos[4];
vector<pair<int, int> > res;
int mp[1010][1010];
void get_path(pair<int, int> t1, pair<int, int> t2) {
  if (mp[t1.first][t1.second] == 0) {
    res.push_back(t1);
    mp[t1.first][t1.second] = 1;
  }
  while (t1.first != t2.first) {
    if (t2.first > t1.first)
      t1.first++;
    else
      t1.first--;
    if (mp[t1.first][t1.second] == 0) {
      res.push_back(t1);
      mp[t1.first][t1.second] = 1;
    }
  }
  while (t1.second != t2.second) {
    if (t2.second > t1.second)
      t1.second++;
    else
      t1.second--;
    if (mp[t1.first][t1.second] == 0) {
      res.push_back(t1);
      mp[t1.first][t1.second] = 1;
    }
  }
  if (mp[t1.first][t1.second] == 0) {
    res.push_back(t1);
    mp[t1.first][t1.second] = 1;
  }
}
int main() {
  for (int i = 1; i <= 3; i++) cin >> pos[i].first >> pos[i].second;
  sort(pos + 1, pos + 3 + 1);
  pair<int, int> p1 = pos[1], p2;
  p2.first = pos[2].first;
  for (int i = 1; i <= 3; i++) swap(pos[i].first, pos[i].second);
  sort(pos + 1, pos + 3 + 1);
  p2.second = pos[2].first;
  get_path(p1, p2);
  for (int i = 1; i <= 3; i++) swap(pos[i].first, pos[i].second);
  sort(pos + 1, pos + 3 + 1);
  get_path(p2, pos[2]);
  get_path(p2, pos[3]);
  int len = res.size();
  printf("%d\n", len);
  for (int i = 0; i <= len - 1; i++)
    printf("%d %d\n", res[i].first, res[i].second);
  return 0;
}
