#include <bits/stdc++.h>
using namespace std;
const int M = 1e5, N = 2e6 + 10;
int s[N], x, y, v, n, tp, p, cnt;
double ans;
struct pt {
  double x, y;
  pt(double _x = 0, double _y = 0) : x(_x), y(_y) {}
} f[N];
inline pt operator+(pt a, pt b) { return pt(a.x + b.x, a.y + b.y); }
inline pt operator-(pt a, pt b) { return pt(a.x - b.x, a.y - b.y); }
inline double operator*(pt a, pt b) { return a.x * b.x + a.y * b.y; }
inline double operator^(pt a, pt b) { return a.x * b.y - a.y * b.x; }
inline bool operator<(pt a, pt b) { return a.x == b.x ? a.y < b.y : a.x < b.x; }
inline bool operator==(pt a, pt b) { return a.x == b.x && a.y == b.y; }
inline double len(pt a) { return sqrt(a * a); }
inline void add(int a, int b) {
  if (a >= 0 && b >= 0 && a <= M && b <= M && abs(a - x) + abs(b - y) <= v)
    f[++cnt] = pt(a, b);
}
int main() {
  scanf("%d", &n);
  for (int i = (1); i <= (n); ++i) {
    scanf("%d%d%d", &x, &y, &v);
    add(x + v, y), add(x, y + v), add(x - v, y), add(x, y - v);
    add(0, v + y - x);
    add(0, x + y - v);
    add(x + y - v, 0);
    add(v + x - y, 0);
    add(M, v + x + y - M);
    add(M, y - x - v + M);
    add(v + x + y - M, M);
    add(x - y - v + M, M);
    add(0, 0);
    add(0, M);
    add(M, 0);
    add(M, M);
  }
  sort(f + 1, f + cnt + 1);
  cnt = unique(f + 1, f + cnt + 1) - f - 1;
  s[tp = 1] = 1;
  for (int i = (2); i <= (cnt); ++i) {
    while (tp > 1 && ((f[i] - f[s[tp]]) ^ (f[s[tp]] - f[s[tp - 1]])) >= 0) --tp;
    s[++tp] = i;
  }
  int l = tp;
  for (int i = (cnt - 1); i >= (1); --i) {
    while (tp > l && ((f[i] - f[s[tp]]) ^ (f[s[tp]] - f[s[tp - 1]])) >= 0) --tp;
    s[++tp] = i;
  }
  --tp;
  s[tp + 1] = s[1];
  s[tp + 2] = s[2];
  for (int i = (1); i <= (tp); ++i) {
    pt A = f[s[i + 1]] - f[s[i]], B = f[s[i + 2]] - f[s[i]],
       C = f[s[i + 2]] - f[s[i + 1]];
    double dis = len(A) * len(B) * len(C) / fabs(A ^ B);
    if (dis > ans) ans = dis, p = i;
  }
  for (int i = (0); i <= (2); ++i)
    printf("%d %d\n", (int)f[s[p + i]].x, (int)f[s[p + i]].y);
  return 0;
}
