#include <bits/stdc++.h>
using namespace std;
struct Point {
  double x, y;
  Point(double x = 0, double y = 0) : x(x), y(y) {}
};
Point operator+(Point A, Point B) { return Point(A.x + B.x, A.y + B.y); }
Point operator-(Point A, Point B) { return Point(A.x - B.x, A.y - B.y); }
Point operator*(Point A, double p) { return Point(A.x * p, A.y * p); }
Point operator/(Point A, double p) { return Point(A.x / p, A.y / p); }
bool operator<(const Point& a, const Point& b) {
  a.x < b.x || a.x == b.x&& a.y < b.y;
}
int dcmp(double x) {
  if (fabs(x) < 1e-8)
    return 0;
  else
    return x < 0 ? -1 : 1;
}
bool operator==(const Point& a, const Point& b) {
  return dcmp(a.x - b.x) == 0 && dcmp(a.y - b.y) == 0;
}
struct Line {
  Point P;
  Point v;
  double ang;
  Line() {}
  Line(Point P, Point v) : P(P), v(v) { ang = atan2(v.y, v.x); }
  Point point(double a) { return P + v * a; }
  bool operator<(const Line& L) const { return ang < L.ang; }
};
struct Circle {
  Point c;
  double r;
  Circle(Point c, double r) : c(c), r(r) {}
  Point point(double a) { return Point(c.x + cos(a) * r, c.y + sin(a) * r); }
};
double angle(Point v) { return atan2(v.y, v.x); }
double Dot(Point A, Point B) { return A.x * B.x + A.y * B.y; }
double Length(Point A) { return sqrt(Dot(A, A)); }
double Angle(Point A, Point B) {
  return acos(Dot(A, B) / Length(A) / Length(B));
}
int getCircleCircleIntersection(Circle c1, Circle c2, vector<Point>& sol) {
  double d = Length(c1.c - c2.c);
  if (dcmp(d) == 0) {
    if (dcmp(c1.r - c2.r) == 0) return -1;
    return 0;
  }
  if (dcmp(c1.r + c2.r - d) < 0) return 0;
  if (dcmp(fabs(c1.r - c2.r) - d) > 0) return 0;
  double a = angle(c2.c - c1.c);
  double da = acos((((c1.r) * (c1.r)) + ((d) * (d)) - ((c2.r) * (c2.r))) /
                   (2 * c1.r * d));
  Point p1 = c1.point(a - da), p2 = c1.point(a + da);
  sol.push_back(p1);
  if (p1 == p2) return 1;
  sol.push_back(p2);
  return 2;
}
int getLineCircleIntersection(Line L, Circle C, double& t1, double& t2,
                              vector<Point>& sol) {
  double a = L.v.x, b = L.P.x - C.c.x, c = L.v.y, d = L.P.y - C.c.y;
  double e = ((a) * (a)) + ((c) * (c)), f = 2 * (a * b + c * d),
         g = ((b) * (b)) + ((d) * (d)) - ((C.r) * (C.r));
  double delta = ((f) * (f)) - 4 * e * g;
  if (dcmp(delta) < 0) return 0;
  if (dcmp(delta) == 0) {
    t1 = t2 = -f / (2 * e);
    sol.push_back(L.point(t1));
    return 1;
  }
  t1 = (-f - sqrt(delta)) / (2 * e);
  sol.push_back(L.point(t1));
  t2 = (-f + sqrt(delta)) / (2 * e);
  sol.push_back(L.point(t2));
  return 2;
}
double a1, a2, a3, b1, b2, b3, r1, r2, r3;
void print(vector<Point> sol) {
  if (sol.size() == 1)
    printf("%.5lf %.5lf\n", sol[0].x, sol[0].y);
  else if (sol.size() == 2) {
    double ang1 = asin(r1 / sqrt(((a1 - sol[0].x) * (a1 - sol[0].x)) +
                                 ((b1 - sol[0].y) * (b1 - sol[0].y)))),
           ang2 = asin(r1 / sqrt(((a1 - sol[1].x) * (a1 - sol[1].x)) +
                                 ((b1 - sol[1].y) * (b1 - sol[1].y))));
    if (dcmp(ang1 - ang2) > 0)
      printf("%.5lf %.5lf\n", sol[0].x, sol[0].y);
    else
      printf("%.5lf %.5lf\n", sol[1].x, sol[1].y);
  }
}
void solve() {
  cin >> a1 >> b1 >> r1;
  cin >> a2 >> b2 >> r2;
  cin >> a3 >> b3 >> r3;
  double x1, x2, y1, y2, z1, z2;
  if (fabs(r1 - r2) > 1e-8 && fabs(r1 - r3) > 1e-8) {
    x1 = (((r1) * (r1)) * a2 - ((r2) * (r2)) * a1) /
         (((r1) * (r1)) - ((r2) * (r2)));
    y1 = (((r1) * (r1)) * b2 - ((r2) * (r2)) * b1) /
         (((r1) * (r1)) - ((r2) * (r2)));
    z1 = ((r1) * (r1)) * ((r2) * (r2)) *
         (((b1 - b2) * (b1 - b2)) + ((a1 - a2) * (a1 - a2))) /
         ((((r1) * (r1)) - ((r2) * (r2))) * (((r1) * (r1)) - ((r2) * (r2))));
    x2 = (((r1) * (r1)) * a3 - ((r3) * (r3)) * a1) /
         (((r1) * (r1)) - ((r3) * (r3)));
    y2 = (((r1) * (r1)) * b3 - ((r3) * (r3)) * b1) /
         (((r1) * (r1)) - ((r3) * (r3)));
    z2 = ((r1) * (r1)) * ((r3) * (r3)) *
         (((b1 - b3) * (b1 - b3)) + ((a1 - a3) * (a1 - a3))) /
         ((((r1) * (r1)) - ((r3) * (r3))) * (((r1) * (r1)) - ((r3) * (r3))));
    vector<Point> sol;
    getCircleCircleIntersection(Circle(Point(x1, y1), sqrt(z1)),
                                Circle(Point(x2, y2), sqrt(z2)), sol);
    print(sol);
  } else if (fabs(r1 - r3) < 1e-8 && fabs(r1 - r2) < 1e-8) {
    x1 = 2 * (a2 - a1);
    y1 = 2 * (b2 - b1);
    x2 = 2 * (a3 - a1);
    y2 = 2 * (b3 - b1);
    z1 = ((a2) * (a2)) + ((b2) * (b2)) - ((a1) * (a1)) - ((b1) * (b1));
    z2 = ((a3) * (a3)) + ((b3) * (b3)) - ((a1) * (a1)) - ((b1) * (b1));
    double d = x1 * y2 - x2 * y1;
    double x = (z1 * y2 - y1 * z2) / d;
    double y = (x1 * z2 - x2 * z1) / d;
    printf("%.5lf %.5lf\n", x, y);
  } else if (fabs(r1 - r3) > 1e-8) {
    Point P;
    Line L;
    vector<Point> sol;
    if (dcmp(a1 - a2) == 0) {
      P.x = 0;
      P.y = (((a2) * (a2)) + ((b2) * (b2)) - ((a1) * (a1)) - ((b1) * (b1))) /
            (2 * b2 - 2 * b1);
      L.P = P;
      L.v = Point(1, 0);
      x2 = (((r1) * (r1)) * a3 - ((r3) * (r3)) * a1) /
           (((r1) * (r1)) - ((r3) * (r3)));
      y2 = (((r1) * (r1)) * b3 - ((r3) * (r3)) * b1) /
           (((r1) * (r1)) - ((r3) * (r3)));
      z2 = ((r1) * (r1)) * ((r3) * (r3)) *
           (((b1 - b3) * (b1 - b3)) + ((a1 - a3) * (a1 - a3))) /
           ((((r1) * (r1)) - ((r3) * (r3))) * (((r1) * (r1)) - ((r3) * (r3))));
      double t1, t2;
      getLineCircleIntersection(L, Circle(Point(x2, y2), sqrt(z2)), t1, t2,
                                sol);
      print(sol);
    } else if (dcmp(b2 - b1) == 0) {
      P.y = 0;
      P.x = (((a2) * (a2)) + ((b2) * (b2)) - ((a1) * (a1)) - ((b1) * (b1))) /
            (2 * a2 - 2 * a1);
      L.P = P;
      L.v = Point(0, 1);
      x2 = (((r1) * (r1)) * a3 - ((r3) * (r3)) * a1) /
           (((r1) * (r1)) - ((r3) * (r3)));
      y2 = (((r1) * (r1)) * b3 - ((r3) * (r3)) * b1) /
           (((r1) * (r1)) - ((r3) * (r3)));
      z2 = ((r1) * (r1)) * ((r3) * (r3)) *
           (((b1 - b3) * (b1 - b3)) + ((a1 - a3) * (a1 - a3))) /
           ((((r1) * (r1)) - ((r3) * (r3))) * (((r1) * (r1)) - ((r3) * (r3))));
      double t1, t2;
      getLineCircleIntersection(L, Circle(Point(x2, y2), sqrt(z2)), t1, t2,
                                sol);
      print(sol);
    } else {
      Point p1, p2;
      p1.x = 0;
      p1.y = (((a2) * (a2)) + ((b2) * (b2)) - ((a1) * (a1)) - ((b1) * (b1))) /
             (2 * b2 - 2 * b1);
      p2.y = 0;
      p2.x = (((a2) * (a2)) + ((b2) * (b2)) - ((a1) * (a1)) - ((b1) * (b1))) /
             (2 * a2 - 2 * a1);
      L.P = p1;
      L.v = p1 - p2;
      x2 = (((r1) * (r1)) * a3 - ((r3) * (r3)) * a1) /
           (((r1) * (r1)) - ((r3) * (r3)));
      y2 = (((r1) * (r1)) * b3 - ((r3) * (r3)) * b1) /
           (((r1) * (r1)) - ((r3) * (r3)));
      z2 = ((r1) * (r1)) * ((r3) * (r3)) *
           (((b1 - b3) * (b1 - b3)) + ((a1 - a3) * (a1 - a3))) /
           ((((r1) * (r1)) - ((r3) * (r3))) * (((r1) * (r1)) - ((r3) * (r3))));
      double t1, t2;
      getLineCircleIntersection(L, Circle(Point(x2, y2), sqrt(z2)), t1, t2,
                                sol);
      print(sol);
    }
  } else {
    Point P;
    Line L;
    vector<Point> sol;
    if (dcmp(a1 - a3) == 0) {
      P.x = 0;
      P.y = (((a3) * (a3)) + ((b3) * (b3)) - ((a1) * (a1)) - ((b1) * (b1))) /
            (2 * b3 - 2 * b1);
      L.P = P;
      L.v = Point(1, 0);
      x2 = (((r1) * (r1)) * a2 - ((r2) * (r2)) * a1) /
           (((r1) * (r1)) - ((r2) * (r2)));
      y2 = (((r1) * (r1)) * b2 - ((r2) * (r2)) * b1) /
           (((r1) * (r1)) - ((r2) * (r2)));
      z2 = ((r1) * (r1)) * ((r2) * (r2)) *
           (((b1 - b2) * (b1 - b2)) + ((a1 - a2) * (a1 - a2))) /
           ((((r1) * (r1)) - ((r2) * (r2))) * (((r1) * (r1)) - ((r2) * (r2))));
      double t1, t2;
      getLineCircleIntersection(L, Circle(Point(x2, y2), sqrt(z2)), t1, t2,
                                sol);
      print(sol);
    } else if (dcmp(b3 - b1) == 0) {
      P.y = 0;
      P.x = (((a3) * (a3)) + ((b3) * (b3)) - ((a1) * (a1)) - ((b1) * (b1))) /
            (2 * a3 - 2 * a1);
      L.P = P;
      L.v = Point(0, 1);
      x2 = (((r1) * (r1)) * a2 - ((r2) * (r2)) * a1) /
           (((r1) * (r1)) - ((r2) * (r2)));
      y2 = (((r1) * (r1)) * b2 - ((r2) * (r2)) * b1) /
           (((r1) * (r1)) - ((r2) * (r2)));
      z2 = ((r1) * (r1)) * ((r2) * (r2)) *
           (((b1 - b2) * (b1 - b2)) + ((a1 - a2) * (a1 - a2))) /
           ((((r1) * (r1)) - ((r2) * (r2))) * (((r1) * (r1)) - ((r2) * (r2))));
      double t1, t2;
      getLineCircleIntersection(L, Circle(Point(x2, y2), sqrt(z2)), t1, t2,
                                sol);
      print(sol);
    } else {
      Point p1, p2;
      p1.x = 0;
      p1.y = (((a3) * (a3)) + ((b3) * (b3)) - ((a1) * (a1)) - ((b1) * (b1))) /
             (2 * b3 - 2 * b1);
      p2.y = 0;
      p2.x = (((a3) * (a3)) + ((b3) * (b3)) - ((a1) * (a1)) - ((b1) * (b1))) /
             (2 * a3 - 2 * a1);
      L.P = p1;
      L.v = p1 - p2;
      x2 = (((r1) * (r1)) * a2 - ((r2) * (r2)) * a1) /
           (((r1) * (r1)) - ((r2) * (r2)));
      y2 = (((r1) * (r1)) * b2 - ((r2) * (r2)) * b1) /
           (((r1) * (r1)) - ((r2) * (r2)));
      z2 = ((r1) * (r1)) * ((r2) * (r2)) *
           (((b1 - b2) * (b1 - b2)) + ((a1 - a2) * (a1 - a2))) /
           ((((r1) * (r1)) - ((r2) * (r2))) * (((r1) * (r1)) - ((r2) * (r2))));
      double t1, t2;
      getLineCircleIntersection(L, Circle(Point(x2, y2), sqrt(z2)), t1, t2,
                                sol);
      print(sol);
    }
  }
}
int main() {
  solve();
  return 0;
}
