#include <bits/stdc++.h>
using namespace std;
int n, tot, top;
struct point {
  int x, y;
  bool operator<(const point b) const {
    return (x != b.x) ? x < b.x : y < b.y;
  };
  inline double len() { return sqrt((double)x * x + (double)y * y); }
  point operator-(const point b) const { return (point){x - b.x, y - b.y}; }
} a[1000005], st[1000005];
inline double cross(point a, point b) {
  return (double)a.x * b.y - (double)a.y * b.x;
}
struct node {
  point a, b, c;
  inline double r() {
    return abs(cross(a - c, b - c)) < 1e-10
               ? 0
               : (a - b).len() * (b - c).len() * (c - a).len() / 2.0 /
                     abs(cross(a - c, b - c));
  }
} ans, tmp;
inline int read() {
  int ans = 0, f = 1;
  char c = getchar();
  while (c > '9' || c < '0') {
    if (c == '-') f = -1;
    c = getchar();
  }
  while (c >= '0' && c <= '9')
    ans = (ans << 1) + (ans << 3) + (c ^ 48), c = getchar();
  return ans * f;
}
inline void add(int x, int y) { a[++tot] = (point){x, y}; }
int main() {
  n = read();
  int R = 1e5;
  for (int i = 1; i <= n; ++i) {
    int x = read(), y = read(), v = read();
    if (x + v <= R)
      add(x + v, y);
    else
      add(R, min(R, v - (R - x) + y)), add(R, max(0, y + (R - x) - v));
    if (x - v >= 0)
      add(x - v, y);
    else
      add(0, min(R, y + v - x)), add(0, max(0, y - v + x));
    if (y + v <= R)
      add(x, y + v);
    else
      add(max(0, x - v + (R - y)), R), add(min(R, x + v - (R - y)), R);
    if (y - v >= 0)
      add(x, y - v);
    else
      add(max(0, x - v + y), 0), add(min(R, x + v - y), 0);
  }
  sort(a + 1, a + 1 + tot);
  st[++top] = a[1];
  for (int i = 2; i <= tot; ++i) {
    while (top > 1 &&
           cross(a[i] - st[top - 1], st[top] - st[top - 1]) >= -1e-10)
      top--;
    st[++top] = a[i];
  }
  int las = top;
  for (int i = tot - 1; i; --i) {
    while (top > las &&
           cross(a[i] - st[top - 1], st[top] - st[top - 1]) >= -1e-10)
      top--;
    st[++top] = a[i];
  }
  top--;
  ans = (node){st[1], st[2], st[3]};
  for (int i = 2; i <= top; ++i) {
    tmp = (node){st[i], st[i % top + 1], st[(i + 1) % top + 1]};
    if (ans.r() < tmp.r()) ans = tmp;
  }
  printf("%d %d\n", ans.a.x, ans.a.y);
  printf("%d %d\n", ans.b.x, ans.b.y);
  printf("%d %d\n", ans.c.x, ans.c.y);
}
