#include <bits/stdc++.h>
using namespace std;
struct point {
  double x, y;
};
double ppdist(point P, point Q) { return hypot(P.x - Q.x, P.y - Q.y); }
point circumcenter(point P, point Q, point R) {
  double x1 = Q.x - P.x, y1 = Q.y - P.y, x2 = R.x - P.x, y2 = R.y - P.y;
  double x = (y2 * (x1 * x1 + y1 * y1) - y1 * (x2 * x2 + y2 * y2)) / 2.0 /
             (x1 * y2 - x2 * y1);
  double y = -(x2 * (x1 * x1 + y1 * y1) - x1 * (x2 * x2 + y2 * y2)) / 2.0 /
             (x1 * y2 - x2 * y1);
  point ans = {P.x + x, P.y + y};
  return ans;
}
vector<point> cccross(point O1, double r1, point O2, double r2) {
  double d = ppdist(O1, O2);
  double t = (d * d + r1 * r1 - r2 * r2) / 2.0 / d / d;
  double fx = O1.x + (O2.x - O1.x) * t, fy = O1.y + (O2.y - O1.y) * t;
  double h = sqrt(max(r1 * r1 - t * d * t * d, 0.0));
  double dx = (O2.y - O1.y) / d * h, dy = (O1.x - O2.x) / d * h;
  vector<point> ans;
  point ans1 = {fx + dx, fy + dy};
  ans.push_back(ans1);
  point ans2 = {fx - dx, fy - dy};
  ans.push_back(ans2);
  return ans;
}
point O[10];
double r[10];
void func(void) {
  int i;
  double t = r[1] * r[1] / (r[1] * r[1] - r[0] * r[0]);
  point P = {O[0].x * t + O[1].x * (1.0 - t), O[0].y * t + O[1].y * (1.0 - t)};
  double rp = r[0] * r[1] /
              ((r[0] * r[0] - r[1] * r[1]) > 0 ? (r[0] * r[0] - r[1] * r[1])
                                               : -(r[0] * r[0] - r[1] * r[1])) *
              ppdist(O[0], O[1]);
  t = r[2] * r[2] / (r[2] * r[2] - r[0] * r[0]);
  point Q = {O[0].x * t + O[2].x * (1.0 - t), O[0].y * t + O[2].y * (1.0 - t)};
  double rq = r[0] * r[2] /
              ((r[0] * r[0] - r[2] * r[2]) > 0 ? (r[0] * r[0] - r[2] * r[2])
                                               : -(r[0] * r[0] - r[2] * r[2])) *
              ppdist(O[0], O[2]);
  double d = ppdist(P, Q);
  if (d > rp + rq + 1.0E-9 ||
      d < ((rp - rq) > 0 ? (rp - rq) : -(rp - rq)) - 1.0E-9)
    return;
  vector<point> v = cccross(P, rp, Q, rq);
  if (ppdist(v[0], O[0]) > ppdist(v[1], O[0])) swap(v[0], v[1]);
  printf("%.5f %.5f\n", v[0].x, v[0].y);
}
int main(void) {
  int i;
  for ((i) = 0; (i) < (int)(3); (i)++) cin >> O[i].x >> O[i].y >> r[i];
  if (((r[0] - r[1]) > 0 ? (r[0] - r[1]) : -(r[0] - r[1])) < 1.0E-9 &&
      ((r[0] - r[2]) > 0 ? (r[0] - r[2]) : -(r[0] - r[2])) < 1.0E-9) {
    point P = circumcenter(O[0], O[1], O[2]);
    printf("%.5f %.5f\n", P.x, P.y);
  } else {
    if (((r[0] - r[1]) > 0 ? (r[0] - r[1]) : -(r[0] - r[1])) < 1.0E-9) {
      swap(r[1], r[2]);
      swap(O[1], O[2]);
    }
    if (((r[0] - r[2]) > 0 ? (r[0] - r[2]) : -(r[0] - r[2])) < 1.0E-9) {
      swap(r[0], r[1]);
      swap(O[0], O[1]);
    }
    func();
  }
  return 0;
}
