#include <bits/stdc++.h>
using namespace std;
int n, sz, top, nd;
int fl[4][2] = {{0, 1}, {0, -1}, {1, 0}, {-1, 0}};
double ans;
struct evol {
  int x, y;
  double ang;
  evol operator-(const evol &b) const { return (evol){x - b.x, y - b.y}; }
  long long operator*(const evol &b) const {
    return (long long)x * b.y - (long long)y * b.x;
  }
  bool operator==(const evol &b) const { return x == b.x && y == b.y; }
} a[601010], st[606060];
long long dis(evol u) { return (long long)u.x * u.x + (long long)u.y * u.y; }
long long aabs(long long x) { return x < 0 ? -x : x; }
double calc(evol x, evol y, evol z) {
  double a = sqrt(dis(x - y)), b = sqrt(dis(y - z)), c = sqrt(dis(x - z));
  double S = 2.0 * aabs((x - y) * (z - y));
  return a * b * c / S;
}
bool cmp(evol u, evol v) { return u.y ^ v.y ? u.y < v.y : u.x < v.x; }
bool cmp2(evol u, evol v) {
  return u.ang + 1e-15 < v.ang || (v.ang + 1e-15 > u.ang && u.x < v.x);
}
int main() {
  scanf("%d", &n);
  for (int i = 1; i <= n; i++) {
    int x, y, v;
    scanf("%d%d%d", &x, &y, &v);
    for (int j = 0; j < 4; j++)
      a[++sz] = (evol){x + fl[j][0] * v, y + fl[j][1] * v};
  }
  for (int i = 1; i <= sz; i++)
    if (a[i].x < 0) {
      a[++sz] = (evol){0, min(100000, a[i].y - a[i].x)};
      a[i].y = max(0, a[i].y + a[i].x);
      a[i].x = 0;
    } else if (a[i].x > 100000) {
      a[++sz] = (evol){100000, min(100000, a[i].y + a[i].x - 100000)};
      a[i].y = max(0, a[i].y - (a[i].x - 100000));
      a[i].x = 100000;
    } else if (a[i].y < 0) {
      a[++sz] = (evol){min(100000, a[i].x - a[i].y), 0};
      a[i].x = max(0, a[i].y + a[i].x);
      a[i].y = 0;
    } else if (a[i].y > 100000) {
      a[++sz] = (evol){min(100000, a[i].x + a[i].y - 100000), 100000};
      a[i].x = max(0, a[i].x - (a[i].y - 100000));
      a[i].y = 100000;
    }
  sort(a + 1, a + sz + 1, cmp);
  sz = unique(a + 1, a + sz + 1) - a - 1;
  for (int i = 2; i <= sz; i++)
    a[i].ang = atan2(a[i].y - a[1].y, a[i].x - a[1].x);
  sort(a + 2, a + sz + 1, cmp2);
  st[top = 1] = a[1];
  a[++sz] = a[1];
  for (int i = 2; i <= sz; i++)
    if (a[i].x != a[i - 1].x || a[i].y != a[i - 1].y) {
      while (top > 1 && (a[i] - st[top]) * (st[top] - st[top - 1]) >= 0) top--;
      st[++top] = a[i];
    }
  st[top + 1] = st[2];
  for (int i = 3; i <= top + 1; i++) {
    double k = calc(st[i], st[i - 1], st[i - 2]);
    if (ans + 1e-15 < k) {
      nd = i;
      ans = k;
    }
  }
  for (int i = 0; i <= 2; i++) printf("%d %d\n", st[nd - i].x, st[nd - i].y);
  return 0;
}
