#include <bits/stdc++.h>
using namespace std;
const double eps = 1e-10;
int sg(double x) { return x < -eps ? -1 : (x > eps); }
struct P {
  long long x, y;
  P(long long x = 0, long long y = 0) : x(x), y(y) {}
  P operator+(P a) { return P(x + a.x, y + a.y); }
  P operator-(P a) { return P(x - a.x, y - a.y); }
  P operator/(long long a) { return P(x / a, y / a); }
  P operator*(long long a) { return P(x * a, y * a); }
  long long operator*(P a) { return x * a.y - y * a.x; }
} p[1000006];
double len(P a) { return sqrt(a.x * a.x + a.y * a.y); }
int n;
P stk[1000006];
int top, rnk[1000006];
double ag[1000006];
bool cmp(int x, int y) {
  return !sg(ag[x] - ag[y])
             ? (p[x].x == p[y].x ? p[x].y < p[y].y : p[x].x < p[y].x)
             : ag[x] < ag[y];
}
void work() {
  for (int i = 1; i < n; ++i)
    if (p[i].x < p[0].x || p[i].x == p[0].x && p[i].y < p[0].y)
      swap(p[i], p[0]);
  for (int i = 1; i < n; ++i)
    ag[i] = atan2(p[i].y - p[0].y, p[i].x - p[0].x), rnk[i] = i;
  sort(rnk + 1, rnk + n, cmp);
  stk[top = 0] = p[0];
  for (int i = 1; i < n; ++i) {
    while (top && (stk[top] - stk[top - 1]) * (p[rnk[i]] - stk[top - 1]) <= 0)
      top--;
    stk[++top] = p[rnk[i]];
  }
  for (int i = 0; i <= top; ++i) p[i] = stk[i];
  n = top + 1;
}
const int lim = 1e5;
P q[100];
int pcnt;
P LIM[4][2] = {P(0, 0),     P(0, lim), P(0, lim), P(lim, lim),
               P(lim, lim), P(lim, 0), P(lim, 0), P(0, 0)};
void get(P u, P v) {
  for (int i = 0; i < 4; ++i) {
    long long s1 = (v - u) * (LIM[i][0] - u);
    long long s2 = (LIM[i][1] - u) * (v - u);
    if (s1 + s2 == 0) continue;
    q[pcnt++] = (LIM[i][0] * s2 + LIM[i][1] * s1) / (s1 + s2);
  }
}
int main() {
  int T;
  scanf("%d", &T);
  while (T--) {
    int x, y, v;
    scanf("%d%d%d", &x, &y, &v);
    q[0] = P(x, y - v), q[1] = P(x - v, y), q[2] = P(x, y + v),
    q[3] = P(x + v, y);
    q[4] = P(0, 0), q[5] = P(0, lim), q[6] = P(lim, 0), q[7] = P(lim, lim);
    pcnt = 8;
    for (int i = 0; i < 4; ++i) get(q[i], q[(i + 1) % 4]);
    for (int i = 0; i < pcnt; ++i)
      if (abs(q[i].x - x) + abs(q[i].y - y) <= v && q[i].x >= 0 &&
          q[i].x <= lim && q[i].y >= 0 && q[i].y <= lim)
        p[n++] = q[i];
  }
  work();
  P A1, A2, A3;
  double ans = 0, tmp;
  for (int i = 0; i < n; ++i) {
    P a = p[i], B = p[(i + 1) % n], C = p[(i + 2) % n];
    tmp = len(a - C) * len(a - B) * len(B - C) / fabs((a - C) * (a - B));
    if (tmp > ans) ans = tmp, A1 = a, A2 = B, A3 = C;
  }
  printf("%lld %lld\n%lld %lld\n%lld %lld\n", A1.x, A1.y, A2.x, A2.y, A3.x,
         A3.y);
  return 0;
}
