#include <bits/stdc++.h>
struct P {
  int x;
  int y;
};
P translate(P a, P b, P from) {
  P t;
  t.x = from.x - a.x;
  t.y = from.y - a.y;
  P r;
  r.x = b.x + t.x;
  r.y = b.y + t.y;
  return r;
}
int main() {
  P* p = new P[5];
  for (int i = 0; i < 3; i++) {
    std::cin >> p[i].x >> p[i].y;
  }
  p[3].x = p[0].x;
  p[3].y = p[0].y;
  p[4].x = p[1].x;
  p[4].y = p[1].y;
  std::vector<P> result;
  for (int i = 0; i < 3; i++) {
    P atob = translate(p[i], p[i + 1], p[i + 2]);
    P btoa = translate(p[i + 1], p[i], p[i + 2]);
    bool addA = true;
    bool addB = true;
    for (int j = 0; j < result.size(); j++) {
      if (result[j].x == atob.x && result[j].y == atob.y) {
        addA = false;
      }
      if (result[j].x == btoa.x && result[j].y == btoa.y) {
        addB = false;
      }
    }
    if (addA) result.push_back(atob);
    if (addB) result.push_back(btoa);
  }
  std::cout << result.size() << std::endl;
  for (P p : result) {
    std::cout << p.x << " " << p.y << std::endl;
  }
  return 0;
}
