#include <bits/stdc++.h>
typedef struct {
  double x, y;
} point_t;
typedef struct {
  double x, y, r;
} circle_t;
typedef struct {
  double A, B, C;
} Line;
Line zhong_chui_xian(circle_t circle1, circle_t circle2) {
  Line L1;
  point_t p;
  double k;
  p.x = (circle1.x + circle2.x) / 2;
  p.y = (circle1.y + circle2.y) / 2;
  if (fabs(circle1.y - circle2.y) < 1E-8) {
    L1.A = 1;
    L1.B = 0;
    L1.C = -p.x;
  } else if (fabs(circle1.x - circle2.x) < 1E-8) {
    L1.A = 0;
    L1.B = 1;
    L1.C = -p.y;
  } else {
    k = -1 / ((circle1.y - circle2.y) / (circle1.x - circle2.x));
    L1.A = k;
    L1.B = -1;
    L1.C = p.y - k * p.x;
  }
  return L1;
}
int line_intersect(Line L1, Line L2, point_t& p) {
  double d, d1, d2, d3;
  d = L1.A * L2.B - L2.A * L1.B;
  if (fabs(d) < 1E-8) {
    d1 = L1.A / L2.A;
    d2 = L1.B / L2.B;
    d3 = L1.C / L2.C;
    if (fabs(d1 - d2) < 1E-8 && fabs(d2 - d3) < 1E-8)
      return 2;
    else
      return 0;
  }
  p.x = (L2.C * L1.B - L1.C * L2.B) / d;
  p.y = (L2.A * L1.C - L1.A * L2.C) / d;
  return 1;
}
circle_t yuan_guiji(circle_t circle1, circle_t circle2) {
  circle_t circle3;
  double keep1, keep2, keep3;
  keep1 =
      (circle2.r * circle2.r * circle1.x - circle1.r * circle1.r * circle2.x) /
      (circle1.r * circle1.r - circle2.r * circle2.r);
  keep2 =
      (circle2.r * circle2.r * circle1.y - circle1.r * circle1.r * circle2.y) /
      (circle1.r * circle1.r - circle2.r * circle2.r);
  keep3 = (circle2.r * circle2.r * circle1.x * circle1.x -
           circle1.r * circle1.r * circle2.x * circle2.x -
           circle1.r * circle1.r * circle2.y * circle2.y +
           circle2.r * circle2.r * circle1.y * circle1.y) /
          (circle1.r * circle1.r - circle2.r * circle2.r);
  circle3.x = -keep1;
  circle3.y = -keep2;
  circle3.r = sqrt(keep3 + keep1 * keep1 + keep2 * keep2);
  return circle3;
}
int equa(double A, double B, double C, double& x1, double& x2) {
  double f = B * B - 4 * A * C;
  if (f < 0) return -1;
  x1 = (-B + sqrt(f)) / (2 * A);
  x2 = (-B - sqrt(f)) / (2 * A);
  return 1;
}
double point_line_dis(point_t a, Line ln) {
  return (fabs(ln.A * a.x + ln.B * a.y + ln.C) /
          sqrt(ln.A * ln.A + ln.B * ln.B));
}
int line_circle_intersect(Line ln, circle_t Y, point_t& p1, point_t& p2) {
  double t1, t2, len;
  point_t p3;
  p3.x = Y.x;
  p3.y = Y.y;
  len = point_line_dis(p3, ln);
  if (len > Y.r) return 0;
  int zz = -1;
  if (fabs(ln.B) < 1e-8) {
    p1.x = p2.x = -1.0 * ln.C / ln.A;
    zz = equa(1.0, -2.0 * Y.y,
              Y.y * Y.y + (p1.x - Y.x) * (p1.x - Y.x) - Y.r * Y.r, t1, t2);
    p1.y = t1;
    p2.y = t2;
  } else if (fabs(ln.A) < 1e-8) {
    p1.y = p2.y = -1.0 * ln.C / ln.B;
    zz = equa(1.0, -2.0 * Y.x,
              Y.x * Y.x + (p1.y - Y.y) * (p1.y - Y.y) - Y.r * Y.r, t1, t2);
    p1.x = t1;
    p2.x = t2;
  } else {
    zz = equa(
        ln.A * ln.A + ln.B * ln.B,
        2.0 * ln.A * ln.C + 2.0 * ln.A * ln.B * Y.y - 2.0 * ln.B * ln.B * Y.x,
        ln.B * ln.B * Y.x * Y.x + ln.C * ln.C + 2 * ln.B * ln.C * Y.y +
            ln.B * ln.B * Y.y * Y.y - ln.B * ln.B * Y.r * Y.r,
        t1, t2);
    p1.x = t1, p1.y = -1 * (ln.A / ln.B * t1 + ln.C / ln.B);
    p2.x = t2, p2.y = -1 * (ln.A / ln.B * t2 + ln.C / ln.B);
  }
  if (p1.x - p2.x < 1E-8 && p1.y - p2.y < 1E-8)
    return 1;
  else
    return 2;
}
double dist(double xa, double ya, double xb, double yb) {
  return sqrt((xa - xb) * (xa - xb) + (ya - yb) * (ya - yb));
}
double max(double a, double b) { return a > b ? a : b; }
double min(double a, double b) { return a < b ? a : b; }
int circle_intersect(circle_t A, circle_t B, point_t& ia, point_t& ib) {
  if (A.x == B.x && A.y == B.y) return 5;
  double dd = dist(A.x, A.y, B.x, B.y);
  if (A.r + B.r + 1E-8 < dd) return 1;
  double k, a, b, d, aa, bb, cc, c, drt;
  k = A.r;
  a = B.x - A.x;
  b = B.y - A.y;
  c = B.r;
  d = (c * c) - (k * k) - (a * a) - (b * b);
  aa = 4 * (a * a) + 4 * (b * b);
  bb = 4 * b * d;
  cc = (d * d) - 4 * (a * a) * (k * k);
  drt = (bb * bb) - 4 * aa * cc;
  if (drt < 0) return 5;
  drt = sqrt(drt);
  ia.y = (-bb + drt) / 2 / aa;
  ib.y = (-bb - drt) / 2 / aa;
  if (fabs(a) < 1E-8) {
    ia.x = sqrt((k * k) - (ia.y * ia.y));
    ib.x = -ia.x;
  } else {
    ia.x = (2 * b * ia.y + d) / -2 / a;
    ib.x = (2 * b * ib.y + d) / -2 / a;
  }
  ia.x += A.x;
  ia.y += A.y;
  ib.x += A.x;
  ib.y += A.y;
  if (fabs(ia.y - ib.y) < 1E-8) {
    if (fabs(A.r + B.r - dd) < 1E-8) return 2;
    if (fabs(dd - (max(A.r, B.r) - min(A.r, B.r))) < 1E-8) return 3;
  }
  return 4;
}
int main() {
  circle_t circle[3];
  int i, count;
  Line L1, L2;
  point_t p, p1, p2;
  circle_t circle1, circle2;
  for (i = 0; i < 3; i++)
    scanf("%lf%lf%lf", &circle[i].x, &circle[i].y, &circle[i].r);
  if (fabs(circle[0].r - circle[1].r) < 1E-8) {
    L1 = zhong_chui_xian(circle[0], circle[1]);
    if (fabs(circle[1].r - circle[2].r) < 1E-8) {
      L2 = zhong_chui_xian(circle[1], circle[2]);
      line_intersect(L1, L2, p);
      printf("%0.5lf %0.5lf\n", p.x, p.y);
    } else {
      circle2 = yuan_guiji(circle[1], circle[2]);
      count = line_circle_intersect(L1, circle2, p1, p2);
      if (count == 1) {
        printf("%0.5lf %0.5lf\n", p1.x, p1.y);
      } else if (count == 2) {
        if ((circle[0].r / dist(circle[0].x, circle[0].y, p1.x, p1.y)) >
            (circle[0].r / dist(circle[0].x, circle[0].y, p2.x, p2.y)))
          printf("%0.5lf %0.5lf\n", p1.x, p1.y);
        else
          printf("%0.5lf %0.5lf\n", p2.x, p2.y);
      }
    }
  } else {
    circle1 = yuan_guiji(circle[0], circle[1]);
    if (fabs(circle[1].r - circle[2].r) < 1E-8) {
      L2 = zhong_chui_xian(circle[1], circle[2]);
      count = line_circle_intersect(L2, circle1, p1, p2);
      if (count == 1) {
        printf("%0.5lf %0.5lf\n", p1.x, p1.y);
      } else if (count == 2) {
        if ((circle[0].r / dist(circle[0].x, circle[0].y, p1.x, p1.y)) >
            (circle[0].r / dist(circle[0].x, circle[0].y, p2.x, p2.y)))
          printf("%0.5lf %0.5lf\n", p1.x, p1.y);
        else
          printf("%0.5lf %0.5lf\n", p2.x, p2.y);
      }
    } else {
      circle2 = yuan_guiji(circle[1], circle[2]);
      count = circle_intersect(circle1, circle2, p1, p2);
      if (count == 2 || count == 3) {
        printf("%0.5lf %0.5lf\n", p1.x, p1.y);
      } else if (count == 4) {
        if ((circle[0].r / dist(circle[0].x, circle[0].y, p1.x, p1.y)) >
            (circle[0].r / dist(circle[0].x, circle[0].y, p2.x, p2.y)))
          printf("%0.5lf %0.5lf\n", p1.x, p1.y);
        else
          printf("%0.5lf %0.5lf\n", p2.x, p2.y);
      }
    }
  }
  return 0;
}
