#include <bits/stdc++.h>
using namespace std;
struct pt {
  long long x, y;
  pt operator-(pt b) const { return {x - b.x, y - b.y}; }
  bool operator==(pt b) const { return x == b.x && y == b.y; }
  bool operator<(pt b) const {
    if (x != b.x) return x < b.x;
    return y < b.y;
  }
};
long long det(pt a, pt b, pt c) {
  return a.x * b.y + b.x * c.y + c.x * a.y - a.y * b.x - b.y * c.x - c.y * a.x;
}
long long sq(long long x) { return x * x; }
long long d2(pt a, pt b) { return sq(a.x - b.x) + sq(a.y - b.y); }
long long sp(pt a, pt b) { return a.x * b.x + a.y * b.y; }
bool kolin(pt a, pt b, pt c) {
  if (det(a, b, c) != 0) return false;
  return b == a || b == c || sp(a - b, b - c) > 0;
}
long long sgn(long long x) {
  if (x < 0)
    return -1;
  else if (x == 0)
    return 0;
  else
    return 1;
}
bool sek(pt a, pt b, pt c, pt d) {
  return sgn(det(a, b, c)) * sgn(det(a, b, d)) == -1 &&
         sgn(det(c, d, a)) * sgn(det(c, d, b)) == -1;
}
bool pip(pt b, pt* a, int n) {
  long double w = 0;
  for (int i = 0; i < n; i++) {
    int j = (i + 1) % n;
    long double arg = sp(b - a[i], b - a[j]);
    arg /= sqrt(d2(b, a[i]));
    arg /= sqrt(d2(b, a[j]));
    arg = max(arg, (long double)-1);
    arg = min(arg, (long double)1);
    if (det(b, a[i], a[j]) < 0)
      w += acos(arg);
    else
      w -= acos(arg);
  }
  return abs(w) > 1.5;
}
long long area(pt* a, int n) {
  long long s = 0;
  for (int i = 1; i < n - 1; i++) s += det(a[0], a[i], a[i + 1]);
  return s;
}
basic_string<pt> hull_half(basic_string<pt> a) {
  basic_string<pt> b;
  for (pt p : a) {
    while (b.size() >= 2 && det(b[b.size() - 2], b[b.size() - 1], p) <= 0)
      b.pop_back();
    b += p;
  }
  return b;
}
basic_string<pt> hull(basic_string<pt> a) {
  sort(a.begin(), a.end());
  a.erase(unique(a.begin(), a.end()), a.end());
  auto p = hull_half(a);
  p.pop_back();
  reverse(a.begin(), a.end());
  auto q = hull_half(a);
  q.pop_back();
  return p + q;
}
const long long H = 100000;
basic_string<pt> find_pts(long long x, long long y, long long r) {
  basic_string<pt> z;
  if (x - r >= 0) {
    z += {x - r, y};
  } else {
    long long u = y - abs(x - r);
    long long v = y + abs(x - r);
    u = max(u, 0ll);
    v = min(v, H);
    z += pt{0, u};
    z += pt{0, v};
  }
  if (x + r <= H) {
    z += {x + r, y};
  } else {
    long long u = y - abs(x + r - H);
    long long v = y + abs(x + r - H);
    u = max(u, 0ll);
    v = min(v, H);
    z += pt{H, u};
    z += pt{H, v};
  }
  if (y - r >= 0) {
    z += {x, y - r};
  } else {
    long long u = x - abs(y - r);
    long long v = x + abs(y - r);
    u = max(u, 0ll);
    v = min(v, H);
    z += pt{u, 0};
    z += pt{v, 0};
  }
  if (y + r <= H) {
    z += {x, y + r};
  } else {
    long long u = x - abs(y + r - H);
    long long v = x + abs(y + r - H);
    u = max(u, 0ll);
    v = min(v, H);
    z += pt{u, H};
    z += pt{v, H};
  }
  return z;
}
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(nullptr);
  cout.tie(nullptr);
  cerr.tie(nullptr);
  long long n;
  cin >> n;
  basic_string<pt> b;
  while (n--) {
    long long x, y, v;
    cin >> x >> y >> v;
    b += find_pts(x, y, v);
  }
  b = hull(b);
  b += b.substr(0, 2);
  long double sol = 0;
  basic_string<pt> zz;
  for (int i = 0; i + 2 < (int)b.size(); i++) {
    long double A = sqrt((long double)d2(b[i + 0], b[i + 1]));
    long double B = sqrt((long double)d2(b[i + 1], b[i + 2]));
    long double C = sqrt((long double)d2(b[i + 2], b[i + 0]));
    long double H = abs(det(b[i], b[i + 1], b[i + 2]));
    long double R = A * B * C / H;
    if (R > sol) {
      sol = R;
      zz = b.substr(i, 3);
    }
  }
  for (int i = 0; i < 3; i++) cout << zz[i].x << ' ' << zz[i].y << '\n';
}
