#include <bits/stdc++.h>
using namespace std;
const int MAXN = 307;
const double EPS = 1e-10;
const double INF = 40007;
const double PI = acos(-1.0);
int doubleCmp(double x) {
  if (abs(x) < EPS) {
    return 0;
  }
  if (x > 0) {
    return 1;
  } else {
    return -1;
  }
}
double add(double a, double b) {
  if (abs(a + b) < EPS * (abs(a) + abs(b))) {
    return 0;
  }
  return a + b;
}
struct Point {
  double x, y;
  Point() {}
  Point(double x, double y) : x(x), y(y) {}
  Point(const Point &p) : x(p.x), y(p.y) {}
  bool operator<(const Point &p) const {
    return x < p.x || x == p.x && y < p.y;
  }
  Point operator+(Point p) { return Point(add(x, p.x), add(y, p.y)); }
  Point operator-(Point p) { return Point(add(x, -p.x), add(y, -p.y)); }
  Point operator*(double d) { return Point(x * d, y * d); }
  Point operator/(double d) { return Point(x / d, y / d); }
  double dot(Point p) { return add(x * p.x, y * p.y); }
  double det(Point p) { return add(x * p.y, -y * p.x); }
  double distance(Point p) {
    return sqrt(add((x - p.x) * (x - p.x), (y - p.y) * (y - p.y)));
  }
  double length() { return sqrt(x * x + y * y); }
  Point rotatePoint(double a) {
    return Point(x * cos(a) - y * sin(a), x * sin(a) + y * cos(a));
  }
  friend ostream &operator<<(ostream &os, const Point &p) {
    os << p.x << " " << p.y;
    return os;
  }
  friend istream &operator>>(istream &is, Point &p) {
    is >> p.x >> p.y;
    return is;
  }
};
struct Circle {
  Point o;
  double r;
  Circle() {}
  Circle(Point &o, double r) : o(o), r(r) {}
  bool operator<(const Circle &c) const {
    return r < c.r || r == c.r && o < c.o;
  }
};
struct Triangle {
  Point a, b, c;
  Triangle() {}
  Triangle(Point &a, Point &b, Point &c) : a(a), b(b), c(c) {}
  Point massCenter() { return (a + b + c) / 3.0; }
  Point circumCenter() {
    Point cp;
    double a1 = b.x - a.x;
    double b1 = b.y - a.y;
    double c1 = (a1 * a1 + b1 * b1) / 2;
    double a2 = c.x - a.x;
    double b2 = c.y - a.y;
    double c2 = (a2 * a2 + b2 * b2) / 2;
    double d = a1 * b2 - a2 * b1;
    cp.x = a.x + (c1 * b2 - c2 * b1) / d;
    cp.y = a.y + (a1 * c2 - a2 * c1) / d;
    return cp;
  }
  Point orthoCenter() {
    return this->massCenter() * 3.0 - this->circumCenter() * 2.0;
  }
};
int i, j, k, cnt;
double d, maxSin, tmpSin;
Point ans;
Circle a[3], ab, ac;
vector<Point> cps;
Circle calCircle(Circle &a, Circle &b) {
  Circle res;
  double d = a.o.distance(b.o);
  res.r = d * a.r * b.r / (b.r * b.r - a.r * a.r);
  res.o = a.o + (a.o - b.o) * (a.r * a.r / (b.r * b.r - a.r * a.r));
  return res;
}
Point rotate(const Point &p, double cost, double sint) {
  return Point(p.x * cost - p.y * sint, p.x * sint + p.y * cost);
}
int calCrossPoint(Circle &a, Circle &b) {
  cps.clear();
  double d = a.o.distance(b.o);
  if (doubleCmp(d - a.r - b.r) > 0 || doubleCmp(a.r - d - b.r) > 0 ||
      doubleCmp(b.r - d - a.r) > 0) {
    return 0;
  }
  double cost = (a.r * a.r + d * d - b.r * b.r) / (a.r * d * 2);
  double sint = sqrt(1.0 - cost * cost);
  Point v = (b.o - a.o) / d * a.r;
  cps.push_back(a.o + rotate(v, cost, sint));
  if (doubleCmp(sint) == 0) {
    return 1;
  } else {
    cps.push_back(a.o + rotate(v, cost, -sint));
    return 2;
  }
}
int main() {
  while (cin >> a[0].o >> a[0].r) {
    cin >> a[1].o >> a[1].r;
    cin >> a[2].o >> a[2].r;
    if (a[0].r == a[1].r && a[1].r == a[2].r) {
      ans = Triangle(a[0].o, a[1].o, a[2].o).circumCenter();
      cout << ans << endl;
    } else {
      sort(a, a + 3);
      ac = calCircle(a[0], a[2]);
      if (a[0].r == a[1].r) {
        ab = calCircle(a[1], a[2]);
      } else {
        ab = calCircle(a[0], a[1]);
      }
      cnt = calCrossPoint(ac, ab);
      maxSin = 0;
      for (i = 0; i < cps.size(); i++) {
        tmpSin = a[0].r / cps[i].distance(a[0].o);
        if (tmpSin > maxSin) {
          maxSin = tmpSin;
          ans = cps[i];
        }
      }
      if (cnt) {
        cout << ans << endl;
      }
    }
  }
  return 0;
}
