#include <bits/stdc++.h>
using namespace std;
double sqr(double a) { return a * a; }
struct st {
  double x, y, r;
  void init() { scanf("%lf%lf%lf", &x, &y, &r); }
};
struct point {
  double x, y;
};
int jiefangcheng2(st f, double &x1, double &x2) {
  double a = f.x, b = f.y, c = -f.r;
  double deta = b * b - 4 * a * c;
  if (deta < 0) return 0;
  x1 = (-b + sqrt(deta)) / 2.0 / a;
  x2 = (-b - sqrt(deta)) / 2.0 / a;
  return 1;
}
int circlinecross(st c, st l, point &s1, point &s2) {
  if (l.x != 0) {
    st f;
    f.x = 1 + sqr(l.y) / sqr(l.x);
    f.y = -2.0 * (c.y + l.y * (l.r - c.x * l.x) / sqr(l.x));
    f.r = sqr(c.r) - sqr(c.y) - sqr((l.r - c.x * l.x) / l.x);
    if (jiefangcheng2(f, s1.y, s2.y) == 0) return 0;
    s1.x = (l.r - l.y * s1.y) / l.x;
    s2.x = (l.r - l.y * s2.y) / l.x;
    return 1;
  } else if (l.y != 0) {
    st f;
    f.x = 1 + sqr(l.x) / sqr(l.y);
    f.y = -2.0 * (c.x + l.x * (l.r - c.y * l.y) / sqr(l.y));
    f.r = sqr(c.r) - sqr(c.x) - sqr((l.r - c.y * l.y) / l.y);
    if (jiefangcheng2(f, s1.x, s2.x) == 0) return 0;
    s1.y = (l.r - l.x * s1.x) / l.y;
    s2.y = (l.r - l.x * s2.x) / l.y;
    return 1;
  } else
    return 0;
}
int circcross(st c1, st c2, point &s1, point &s2) {
  double dish = sqrt(sqr(c1.x - c2.x) + sqr(c1.y - c2.y));
  if (dish > c1.r + c2.r || dish < fabs(c1.r - c2.r)) return 0;
  st l;
  l.x = -2.0 * (c1.x - c2.x);
  l.y = -2.0 * (c1.y - c2.y);
  l.r = sqr(c1.r) - sqr(c2.r) - sqr(c1.x) + sqr(c2.x) - sqr(c1.y) + sqr(c2.y);
  return circlinecross(c1, l, s1, s2);
}
int linecross(st l1, st l2, point &s) {
  double det = l1.x * l2.y - l1.y * l2.x;
  if (det == 0) return 0;
  s.x = (l1.r * l2.y - l1.y * l2.r) / det;
  s.y = (l1.x * l2.r - l1.r * l2.x) / det;
  return 1;
}
void change(st c1, st c2, st &cir) {
  if (c1.r != c2.r) {
    if (c1.r > c2.r) {
      st code = c1;
      c1 = c2;
      c2 = code;
    }
    cir.x = (sqr(c2.r) * c1.x - sqr(c1.r) * c2.x) / (sqr(c2.r) - sqr(c1.r));
    cir.y = (sqr(c2.r) * c1.y - sqr(c1.r) * c2.y) / (sqr(c2.r) - sqr(c1.r));
    cir.r = sqrt(sqr(c1.r) * sqr(c2.r) / sqr(sqr(c1.r) - sqr(c2.r)) *
                 (sqr(c1.x - c2.x) + sqr(c1.y - c2.y)));
  } else {
    cir.x = 2.0 * (c1.x - c2.x);
    cir.y = 2.0 * (c1.y - c2.y);
    cir.r = sqr(c1.x) + sqr(c1.y) - sqr(c2.x) - sqr(c2.y);
  }
}
double dis(st c, point p) { return sqrt(sqr(c.x - p.x) + sqr(c.y - p.y)); }
int main() {
  st c1, c2, c3;
  {
    c1.init();
    c2.init();
    c3.init();
    st cir1, cir2;
    change(c1, c2, cir1);
    change(c2, c3, cir2);
    point p1, p2, p;
    int find = 0;
    if (c1.r == c2.r && c2.r == c3.r) {
      find = linecross(cir1, cir2, p);
      p1 = p2 = p;
    } else if (c1.r == c2.r)
      find = circlinecross(cir2, cir1, p1, p2);
    else if (c2.r == c3.r)
      find = circlinecross(cir1, cir2, p1, p2);
    else
      find = circcross(cir1, cir2, p1, p2);
    if (!find) return 0;
    if (dis(c1, p1) < dis(c1, p2))
      p = p1;
    else
      p = p2;
    printf("%.5lf %.5lf\n", p.x, p.y);
  }
  return 0;
}
