#include <bits/stdc++.h>
using namespace std;
const double eps = 1e-4;
const double PI = acos(-1.0);
int sgn(double x) {
  if (fabs(x) < eps) return 0;
  if (x < 0)
    return -1;
  else
    return 1;
}
struct Point {
  double x, y;
  Point(double _x = 0, double _y = 0) {
    x = _x;
    y = _y;
  }
  void in() { scanf("%lf%lf", &x, &y); }
  void out() { printf("%.3f %.3f\n", x, y); }
  Point operator-(const Point &b) const { return Point(x - b.x, y - b.y); }
  Point operator+(const Point &b) const { return Point(x + b.x, y + b.y); }
  double operator^(const Point &b) const { return x * b.y - y * b.x; }
  double operator*(const Point &b) const { return x * b.x + y * b.y; }
  Point operator*(const double p) const { return Point(x * p, y * p); }
  Point transXY(double B) {
    double tx = x, ty = y;
    x = tx * cos(B) - ty * sin(B);
    y = tx * sin(B) + ty * cos(B);
    return *this;
  }
  double normV() { return sqrt(x * x + y * y); }
  Point normP() {
    double v = normV();
    return Point(x / v, y / v);
  }
};
double dist(Point a, Point b) { return sqrt((a - b) * (a - b)); }
Point p[3];
double r[3];
double d[3];
double cal(Point c) {
  for (int i = 0; i < 3; i++) d[i] = dist(c, p[i]);
  double val = 0;
  for (int i = 0; i < 3; i++) {
    int j = (i + 1) % 3;
    val += ((d[i] / r[i] - d[j] / r[j]) * (d[i] / r[i] - d[j] / r[j]));
  }
  return val;
}
int main() {
  for (int i = 0; i < 3; i++) {
    p[i].in();
    scanf("%lf", &r[i]);
  }
  Point ans = (p[0] + p[1] + p[2]) * (1.0 / 3);
  double L = 10;
  bool f = 0;
  for (int i = 0; i < 1e4; i++) {
    f = 0;
    if (cal(ans) > cal(Point(ans.x + L, ans.y))) ans.x += L, f = 1;
    if (cal(ans) > cal(Point(ans.x - L, ans.y))) ans.x -= L, f = 1;
    if (cal(ans) > cal(Point(ans.x, ans.y + L))) ans.y += L, f = 1;
    if (cal(ans) > cal(Point(ans.x, ans.y - L))) ans.y -= L, f = 1;
    if (!f) L *= 0.8;
  }
  if (cal(ans) < 1e-5) printf("%.5f %.5f", ans.x, ans.y);
  return 0;
}
