#include <bits/stdc++.h>
using namespace std;
template <class T>
inline void read(T &x) {
  int f = 0;
  x = 0;
  char ch = getchar();
  for (; !isdigit(ch); ch = getchar()) f |= (ch == '-');
  for (; isdigit(ch); ch = getchar()) x = x * 10 + ch - '0';
  if (f) x = -x;
}
const double eps = 1e-12;
const int N = 1000005, inf = 1e5;
struct pt {
  int x, y;
  pt(int _x = 0, int _y = 0) { x = _x, y = _y; }
  friend pt operator-(pt a, pt b) { return pt(a.x - b.x, a.y - b.y); }
  friend double moew(pt a) { return sqrt(1.0 * a.x * a.x + 1.0 * a.y * a.y); }
  friend long long operator*(pt a, pt b) {
    return (long long)a.x * b.y - (long long)a.y * b.x;
  }
  friend bool operator<(pt a, pt b) {
    return a.x == b.x ? a.y < b.y : a.x < b.x;
  }
  friend bool operator==(pt a, pt b) { return !(a < b) && !(b < a); }
} p[N], s[N];
int m, n, c, x, y, v;
void build() {
  sort(p + 1, p + n + 1);
  for (int i = (1); i <= (n); i++) {
    while (c >= 2 && (p[i] - s[c - 1]) * (s[c] - s[c - 1]) >= 0) c--;
    s[++c] = p[i];
  }
  int bt = c;
  for (int i = (n - 1); i >= (2); i--) {
    while (c >= bt + 1 && (p[i] - s[c - 1]) * (s[c] - s[c - 1]) >= 0) c--;
    s[++c] = p[i];
  }
  s[c + 1] = s[1], s[c + 2] = s[1];
}
double calc(pt a, pt b, pt c) {
  double A = moew(a - c), B = moew(b - a), C = moew(b - c);
  if (A < eps || B < eps || C < eps) return 0;
  double CosA = (B * B + C * C - A * A) / 2 / B / C;
  double SinA = sqrt(1 - CosA * CosA);
  return SinA < eps ? 0 : A / SinA;
}
int main() {
  read(m);
  for (int i = (1); i <= (m); i++) {
    read(x), read(y), read(v);
    if (x - v >= 0)
      p[++n] = pt(x - v, y);
    else {
      int vv = v - x;
      p[++n] = pt(0, max(0, y - vv));
      p[++n] = pt(0, min(inf, y + vv));
    }
    if (x + v <= inf)
      p[++n] = pt(x + v, y);
    else {
      int vv = v - inf + x;
      p[++n] = pt(inf, max(0, y - vv));
      p[++n] = pt(inf, min(inf, y + vv));
    }
    if (y - v >= 0)
      p[++n] = pt(x, y - v);
    else {
      int vv = v - y;
      p[++n] = pt(max(0, x - vv), 0);
      p[++n] = pt(min(inf, x + vv), 0);
    }
    if (y + v <= inf)
      p[++n] = pt(x, y + v);
    else {
      int vv = v - inf + y;
      p[++n] = pt(max(0, x - vv), inf);
      p[++n] = pt(min(inf, x + vv), inf);
    }
  }
  build();
  double ans = 0;
  pt A, B, C;
  for (int i = (1); i <= (c); i++) {
    double tmp = calc(s[i], s[i + 1], s[i + 2]);
    if (tmp > ans) {
      ans = tmp;
      A = s[i], B = s[i + 1], C = s[i + 2];
    }
  }
  printf("%d %d\n%d %d\n%d %d\n", A.x, A.y, B.x, B.y, C.x, C.y);
  return 0;
}
