#include <bits/stdc++.h>
using namespace std;
const int maxn = 1e3 + 10;
struct node {
  int x, y;
} N[maxn];
struct edge {
  int u, v, w;
} E[maxn];
int dis(node a, node b) { return abs(a.x - b.x) + abs(a.y - b.y); }
int cmp(edge a, edge b) { return a.w < b.w; }
int rudu[maxn];
int chudu[maxn];
int fa[maxn];
int mp[maxn][maxn];
int mp2[maxn][maxn];
int main() {
  int x, y;
  for (int i = 1; i < maxn; i++) {
    fa[i] = i;
  }
  for (int i = 1; i <= 3; i++) {
    scanf("%d %d", &x, &y);
    N[i].x = x;
    N[i].y = y;
    mp[x][y] = 1;
    mp2[x][y] = 1;
  }
  int sz = 0;
  for (int i = 1; i <= 2; i++) {
    for (int j = 2; j <= 3; j++) {
      if (i == j) continue;
      int w = dis(N[i], N[j]);
      E[++sz].w = w;
      E[sz].u = i;
      E[sz].v = j;
    }
  }
  sort(E + 1, E + 1 + 3, cmp);
  for (int i = 1; i <= 3; i++) {
    mp[N[i].x][N[i].y] = 1;
    mp2[N[i].x][N[i].y] = 1;
  }
  int x3, y3;
  int x1, x2, y1, y2;
  x1 = N[E[1].u].x;
  y1 = N[E[1].u].y;
  x2 = N[E[1].v].x;
  y2 = N[E[1].v].y;
  for (int i = 1; i <= 3; i++) {
    if ((N[i].x != x1 || N[i].y != y1) && (N[i].x != x2 || N[i].y != y2)) {
      x3 = N[i].x;
      y3 = N[i].y;
      break;
    }
  }
  node t;
  edge tt;
  node s3;
  s3.x = x3;
  s3.y = y3;
  sz = 0;
  N[0].x = x3;
  N[0].y = y3;
  int tx1 = x1, tx2 = x2, tx3 = x3, ty1 = y1, ty2 = y2, ty3 = y3;
  for (int i = min(x1, x2); i <= max(x1, x2); i++) {
    mp[i][y1] = 1;
    N[++sz].x = i;
    N[sz].y = y1;
    E[sz].u = sz;
    E[sz].v = 0;
    E[sz].w = dis(N[0], N[sz]);
  }
  for (int i = min(y1, y2); i <= max(y1, y2); i++) {
    mp[x2][i] = 1;
    N[++sz].x = x2;
    N[sz].y = i;
    E[sz].u = sz;
    E[sz].v = 0;
    E[sz].w = dis(N[0], N[sz]);
  }
  sort(E + 1, E + 1 + sz, cmp);
  x1 = N[E[1].u].x;
  x2 = N[E[1].v].x;
  y1 = N[E[1].u].y;
  y2 = N[E[1].v].y;
  for (int i = min(x1, x2); i <= max(x1, x2); i++) {
    mp[i][y1] = 1;
  }
  for (int i = min(y1, y2); i <= max(y1, y2); i++) {
    mp[x2][i] = 1;
  }
  sz = 0;
  x1 = tx1;
  x2 = tx2;
  x3 = tx3;
  y1 = ty1;
  y2 = ty2;
  y3 = ty3;
  N[0].x = x3;
  N[0].y = y3;
  for (int i = min(x1, x2); i <= max(x1, x2); i++) {
    mp2[i][y2] = 1;
    N[++sz].x = i;
    N[sz].y = y2;
    E[sz].u = sz;
    E[sz].v = 0;
    E[sz].w = dis(N[0], N[sz]);
  }
  for (int i = min(y1, y2); i <= max(y1, y2); i++) {
    mp2[x1][i] = 1;
    N[++sz].x = x1;
    N[sz].y = i;
    E[sz].u = sz;
    E[sz].v = 0;
    E[sz].w = dis(N[0], N[sz]);
  }
  sort(E + 1, E + 1 + sz, cmp);
  x1 = N[E[1].u].x;
  x2 = N[E[1].v].x;
  y1 = N[E[1].u].y;
  y2 = N[E[1].v].y;
  for (int i = min(x1, x2); i <= max(x1, x2); i++) {
    mp2[i][y1] = 1;
  }
  for (int i = min(y1, y2); i <= max(y1, y2); i++) {
    mp2[x2][i] = 1;
  }
  int res1 = 0;
  int res2 = 0;
  for (int i = 0; i < maxn; i++) {
    for (int j = 0; j < maxn; j++) {
      if (mp[i][j]) res1++;
      if (mp2[i][j]) res2++;
    }
  }
  if (res1 > res2) {
    cout << res2 << endl;
    for (int i = 0; i < maxn; i++) {
      for (int j = 0; j < maxn; j++) {
        if (mp2[i][j]) printf("%d %d\n", i, j);
      }
    }
  } else {
    cout << res1 << endl;
    for (int i = 0; i < maxn; i++) {
      for (int j = 0; j < maxn; j++) {
        if (mp[i][j]) printf("%d %d\n", i, j);
      }
    }
  }
  return 0;
}
