#include <bits/stdc++.h>
typedef struct {
  double x;
  double y;
  double r;
} circle;
typedef struct {
  double x;
  double y;
} pt;
int x[3];
int y[3];
int r[3];
pt np(double x, double y) {
  pt q;
  q.x = x;
  q.y = y;
  return q;
}
double abs_d(double d1) {
  if (d1 > 0) return d1;
  return -d1;
}
bool flag2 = true;
pt p;
double dist(pt p1, pt p2) {
  return sqrt((p1.x - p2.x) * (p1.x - p2.x) + (p1.y - p2.y) * (p1.y - p2.y));
}
void circumcenter(pt p1, pt p2, pt p3) {
  double K = abs_d(.5 * (p1.x * p2.y + p2.x * p3.y + p3.x * p1.y - p1.y * p2.x -
                         p2.y * p3.x - p3.y * p1.x));
  if (K < .01) {
    flag2 = false;
    return;
  }
  double a = dist(p1, p2);
  double b = dist(p1, p3);
  double c = dist(p2, p3);
  double R = a * b * c / 4 / K;
  double d = sqrt(R * R - (a / 2) * (a / 2));
  double nx = (p1.x + p2.x) / 2;
  double ny = (p1.y + p2.y) / 2;
  double mx = p1.y - p2.y;
  double my = p2.x - p1.x;
  double len = sqrt(mx * mx + my * my);
  mx /= len;
  my /= len;
  p.x = nx + d * mx;
  p.y = ny + d * my;
  if (abs_d(dist(p, p3) - R) > .001) {
    p.x = nx - d * mx;
    p.y = ny - d * my;
  }
}
bool flag = true;
pt pos1;
pt pos2;
void intersection(circle c1, circle c2) {
  pt p;
  p.x = -1e9;
  p.y = -1e9;
  double d =
      sqrt((c1.x - c2.x) * (c1.x - c2.x) + (c1.y - c2.y) * (c1.y - c2.y));
  if (d > c1.r + c2.r) flag = false;
  if (abs_d(c1.r - c2.r) > d) flag = false;
  if (flag == false) return;
  double a = d;
  double b = c1.r;
  double c = c2.r;
  double s = (a + b + c) / 2;
  double K = sqrt(s * (s - a) * (s - b) * (s - c));
  double h = 2 * K / a;
  double d_par = sqrt(b * b - h * h);
  if (b * b + d * d < c * c) d_par = -d_par;
  double nx = c1.x + (c2.x - c1.x) * d_par / d;
  double ny = c1.y + (c2.y - c1.y) * d_par / d;
  double oppx = c2.y - c1.y;
  double oppy = c1.x - c2.x;
  double len = sqrt(oppx * oppx + oppy * oppy);
  oppx /= len;
  oppy /= len;
  pos1.x = nx + h * oppx;
  pos1.y = ny + h * oppy;
  pos2.x = nx - h * oppx;
  pos2.y = ny - h * oppy;
}
int main() {
  for (int i = 0; i < 3; i++) {
    scanf("%d %d %d", &x[i], &y[i], &r[i]);
  }
  pt p1 = np(x[0], y[0]);
  pt p2 = np(x[1], y[1]);
  pt p3 = np(x[2], y[2]);
  if (r[0] == r[1] && r[1] == r[2]) {
    circumcenter(p1, p2, p3);
    if (flag2) {
      printf("%.5f %.5f", p.x, p.y);
    }
  } else {
    circle c1, c2, c3;
    if (r[0] != r[1]) {
      double x1 = (r[1] * p1.x + r[0] * p2.x) / (r[1] + r[0]);
      double y1 = (r[1] * p1.y + r[0] * p2.y) / (r[1] + r[0]);
      double x2 = (r[1] * p1.x - r[0] * p2.x) / (r[1] - r[0]);
      double y2 = (r[1] * p1.y - r[0] * p2.y) / (r[1] - r[0]);
      c1.x = (x1 + x2) / 2;
      c1.y = (y1 + y2) / 2;
      c1.r = sqrt((x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2)) / 2;
    }
    if (r[0] != r[2]) {
      double x1 = (r[2] * p1.x + r[0] * p3.x) / (r[2] + r[0]);
      double y1 = (r[2] * p1.y + r[0] * p3.y) / (r[2] + r[0]);
      double x2 = (r[2] * p1.x - r[0] * p3.x) / (r[2] - r[0]);
      double y2 = (r[2] * p1.y - r[0] * p3.y) / (r[2] - r[0]);
      c2.x = (x1 + x2) / 2;
      c2.y = (y1 + y2) / 2;
      c2.r = sqrt((x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2)) / 2;
    }
    if (r[1] != r[2]) {
      double x1 = (r[2] * p2.x + r[1] * p3.x) / (r[2] + r[1]);
      double y1 = (r[2] * p2.y + r[1] * p3.y) / (r[2] + r[1]);
      double x2 = (r[2] * p2.x - r[1] * p3.x) / (r[2] - r[1]);
      double y2 = (r[2] * p2.y - r[1] * p3.y) / (r[2] - r[1]);
      c3.x = (x1 + x2) / 2;
      c3.y = (y1 + y2) / 2;
      c3.r = sqrt((x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2)) / 2;
    }
    if (r[0] == r[1]) {
      intersection(c2, c3);
    } else if (r[0] == r[2]) {
      intersection(c1, c3);
    } else {
      intersection(c1, c2);
    }
    if (flag) {
      if (dist(pos1, p1) > dist(pos2, p1)) {
        printf("%.5f %.5f", pos2.x, pos2.y);
      } else {
        printf("%.5f %.5f", pos1.x, pos1.y);
      }
    }
  }
  fflush(stdin);
  getchar();
}
