#include <bits/stdc++.h>
using namespace std;
using ll = long long;
using ull = unsigned long long;
using str = string;
using srt = short;
const int INF = (int)1e9 + 4;
const int MOD = (int)1e9 + 7;
const int N = 1005;
const ll inf = (ll)4e18;
const ll mod = 998244353;
bool us[N][N];
set<pair<int, int>> ans;
vector<pair<int, int>> arr(3);
vector<pair<int, int>> dirs = {{-1, 0}, {1, 0}, {0, -1}, {0, 1}};
int dist(pair<int, int> a, pair<int, int> b) {
  return abs(a.first - b.first) + abs(a.second - b.second);
}
void vToV(int st, int en) {
  int x1 = arr[st].first, y1 = arr[st].second, x2 = arr[en].first,
      y2 = arr[en].second;
  ans.insert({x1, y1});
  while (x1 != x2 || y1 != y2) {
    us[x1][y1] = 1;
    if (x1 < x2 && us[x1 + 1][y1]) {
      ans.insert({++x1, y1});
    } else if (y1 < y2 && us[x1][y1 + 1]) {
      ans.insert({x1, ++y1});
    } else if (y1 > y2 && us[x1][y1 - 1]) {
      ans.insert({x1, --y1});
    } else {
      int dst = INF;
      pair<int, int> dir;
      for (auto it : dirs) {
        int now = dist({x1 + it.first, y1 + it.second}, {x2, y2});
        if (now < dst) {
          dir = it;
          dst = now;
        }
      }
      x1 += dir.first;
      y1 += dir.second;
      ans.insert({x1, y1});
    }
  }
}
int main() {
  ios::sync_with_stdio(0);
  cin.tie(NULL);
  cout.tie(NULL);
  for (auto &it : arr) {
    cin >> it.first >> it.second;
    ans.insert(it);
    us[it.first][it.second] = 1;
  }
  sort(begin(arr), end(arr));
  arr.emplace_back(arr.back());
  vToV(0, 1);
  vToV(1, 2);
  cout << ans.size() << endl;
  for (auto &it : ans) cout << it.first << ' ' << it.second << endl;
}
