#include <bits/stdc++.h>
using namespace std;
const int Inf = 0x3f3f3f3f;
const long long INF = 0x3f3f3f3f3f3f3f3fll;
const long double inF = 11451419198101145141919810.1145141919810;
const long double pi = acosl(-1);
struct point {
  int x, y;
  point(int x = 0, int y = 0) : x(x), y(y) {}
  inline point operator-(const point &pt) const {
    return point(x - pt.x, y - pt.y);
  }
  inline long long operator%(const point &pt) const {
    return 1ll * x * pt.y - 1ll * y * pt.x;
  }
  inline bool operator<(const point &p) const {
    return x == p.x ? y < p.y : x < p.x;
  }
  inline long double size() const { return sqrtl(1ll * x * x + 1ll * y * y); }
};
const int M = 100000;
int n;
int x[1 << 17], y[1 << 17], v[1 << 17];
vector<point> ps, tb;
void inline apt(int X, int Y, int id) {
  if (abs(X - x[id]) + abs(Y - y[id]) <= v[id] && X >= 0 && X <= M && Y >= 0 &&
      Y <= M)
    ps.push_back(point(X, Y));
}
int main() {
  scanf("%d", &n);
  for (int i = 1; i <= (n); i++) {
    scanf("%d%d%d", x + i, y + i, v + i);
    apt(0, 0, i);
    apt(0, M, i);
    apt(M, 0, i);
    apt(M, M, i);
    apt(x[i] + v[i], y[i], i);
    apt(x[i] - v[i], y[i], i);
    apt(x[i], y[i] + v[i], i);
    apt(x[i], y[i] - v[i], i);
    apt(0, y[i] + v[i] - x[i], i);
    apt(0, y[i] - v[i] + x[i], i);
    apt(x[i] + v[i] - y[i], 0, i);
    apt(x[i] - v[i] + y[i], 0, i);
    apt(M, y[i] + v[i] - M + x[i], i);
    apt(M, y[i] - v[i] + M - x[i], i);
    apt(x[i] + v[i] - M + y[i], M, i);
    apt(x[i] - v[i] + M - y[i], M, i);
  }
  sort((ps).begin(), (ps).end());
  for (int i = 0; i < (ps.size()); i++) {
    while (tb.size() > 1 &&
           (tb[tb.size() - 2] - tb.back()) % (ps[i] - tb.back()) <= 0)
      tb.pop_back();
    tb.push_back(ps[i]);
  }
  int tbs = tb.size();
  reverse((ps).begin(), (ps).end());
  for (int i = 0; i < (ps.size()); i++) {
    while (tb.size() > tbs &&
           (tb[tb.size() - 2] - tb.back()) % (ps[i] - tb.back()) <= 0)
      tb.pop_back();
    tb.push_back(ps[i]);
  }
  tb.pop_back();
  long double md = -1;
  point pa, pb, pc;
  for (int i = 0, j = tb.size() - 1, k = tb.size() - 2; i < tb.size();
       k = j, j = i++) {
    long double d = (tb[i] - tb[j]).size() * (tb[j] - tb[k]).size() *
                    (tb[k] - tb[i]).size() /
                    ((tb[i] - tb[j]) % (tb[j] - tb[k]));
    if (d > md) {
      md = d;
      pa = tb[i];
      pb = tb[j];
      pc = tb[k];
    }
  }
  printf("%d %d\n", pa.x, pa.y);
  printf("%d %d\n", pb.x, pb.y);
  printf("%d %d\n", pc.x, pc.y);
  return 0;
}
