#include <bits/stdc++.h>
using namespace std;
const int N = (int)(1e3) + 7;
const int M = (int)(1e5) + 7;
const long double eps = 1e-12;
const long long MOD = (long long)(1e9) + 7;
const long long INF = (long long)(1e9) + 7;
const long double PI = 3.14159265358979310000;
struct circle {
  long double first, second, r;
};
circle c[3];
bool f;
long double dist(pair<long double, long double> first,
                 pair<long double, long double> second) {
  return sqrt((first.first - second.first) * (first.first - second.first) +
              (first.second - second.second) * (first.second - second.second));
}
vector<pair<long double, long double> > intersec_lines(
    pair<pair<long double, long double>, long double> l1,
    pair<pair<long double, long double>, long double> l2) {
  long double a1 = l1.first.first, a2 = l2.first.first, b1 = l1.first.second,
              b2 = l2.first.second, c1 = l1.second, c2 = l2.second;
  long double zn = (a1 * b2) - (a2 * b1);
  vector<pair<long double, long double> > res;
  res.clear();
  if (fabs(zn) < eps) return res;
  res.push_back(
      make_pair(-((c1 * b2) - (c2 * b1)) / zn, -((a1 * c2) - (a2 * c1)) / zn));
  return res;
}
vector<pair<long double, long double> > intersec_line_circle(
    pair<pair<long double, long double>, long double> k,
    pair<pair<long double, long double>, long double> l) {
  long double first = k.first.first, second = k.first.second, r = k.second,
              a = l.first.first, b = l.first.second, c = l.second;
  vector<pair<long double, long double> > res;
  res.clear();
  if (fabs(a * first + b * second + c) / sqrt(a * a + b * b) > r + eps)
    return res;
  long double d = fabs(a * first + b * second + c) / sqrt(a * a + b * b);
  long double z = sqrt(r * r + eps - d * d);
  pair<long double, long double> v = make_pair(a, b);
  long double dist = sqrt(v.first * v.first + v.second * v.second);
  v.first *= (d / dist);
  v.second *= (d / dist);
  if (fabs(a * (first + v.first) + b * (second + v.second) + c) >= eps) {
    v.first = -v.first;
    v.second = -v.second;
  }
  long double xx = first + v.first, yy = second + v.second;
  long double qq = v.first;
  v.first = -v.second;
  v.second = qq;
  v.first *= (z / d);
  v.second *= (z / d);
  res.push_back(make_pair(xx + v.first, yy + v.second));
  res.push_back(make_pair(xx - v.first, yy - v.second));
  return res;
}
vector<pair<long double, long double> > intersec_circles(
    pair<pair<long double, long double>, long double> c1,
    pair<pair<long double, long double>, long double> c2) {
  long double x1 = c1.first.first, x2 = c2.first.first, y1 = c1.first.second,
              y2 = c2.first.second, r1 = c1.second, r2 = c2.second;
  x2 -= x1;
  y2 -= y1;
  c1 = make_pair(make_pair(-2 * x2, -2 * y2),
                 (x2 * x2 + y2 * y2 + r1 * r1 - r2 * r2));
  c2 = make_pair(make_pair(0.0, 0.0), r1);
  vector<pair<long double, long double> > res = intersec_line_circle(c2, c1);
  for (int i = 0; i < (int)(res.size()); ++i) {
    res[i].first += x1;
    res[i].second += y1;
  }
  return res;
}
pair<pair<long double, long double>, long double> ok(circle a, circle b) {
  if (fabs(a.r - b.r) < eps) {
    long double aa = b.first - a.first, bb = b.second - a.second;
    long double cc = -(aa * ((double)(a.first + b.first) / 2.0) +
                       bb * ((double)(a.second + b.second) / 2.0));
    f = 1;
    return make_pair(make_pair(aa, bb), cc);
  }
  if (a.r + eps > b.r) swap(a, b);
  pair<long double, long double> v =
      make_pair(b.first - a.first, b.second - a.second);
  long double d = sqrt(v.first * v.first + v.second * v.second), k = b.r / a.r;
  v.first /= d;
  v.second /= d;
  d /= (1.0 + k);
  v.first *= d;
  v.second *= d;
  long double x1 = a.first + v.first, y1 = a.second + v.second;
  v = make_pair(a.first - b.first, a.second - b.second);
  d = sqrt(v.first * v.first + v.second * v.second);
  v.first /= d;
  v.second /= d;
  d /= (k - 1.0);
  v.first *= d;
  v.second *= d;
  long double x2 = a.first + v.first, y2 = a.second + v.second;
  long double first = (x1 + x2) / 2.0, second = (y1 + y2) / 2.0;
  d = sqrt((first - x1) * (first - x1) + (second - y1) * (second - y1));
  return make_pair(make_pair(first, second), d);
}
long double get_mini(pair<long double, long double> p) {
  long double mini = INF;
  for (int i = 0; i < 3; ++i)
    mini = min(mini, dist(make_pair(c[i].first, c[i].second), p) - c[i].r);
  return mini;
}
int main() {
  for (int i = 0; i < 3; ++i) cin >> c[i].first >> c[i].second >> c[i].r;
  pair<pair<long double, long double>, long double> q = ok(c[0], c[1]);
  vector<pair<long double, long double> > p;
  if (f) {
    f = 0;
    pair<pair<long double, long double>, long double> w = ok(c[1], c[2]);
    if (f)
      p = intersec_lines(q, w);
    else
      p = intersec_line_circle(w, q);
  } else {
    pair<pair<long double, long double>, long double> w = ok(c[1], c[2]);
    if (f)
      p = intersec_line_circle(q, w);
    else {
      p = intersec_circles(q, w);
    }
  }
  long double mini = INF;
  pair<long double, long double> res;
  for (int i = 0; i < (int)(p.size()); ++i) {
    long double w = get_mini(p[i]);
    if (w + eps < mini) {
      mini = w;
      res = p[i];
    }
  }
  if (fabs(mini - INF) < eps) return 0;
  printf("%1.20lf %1.20lf\n", (double)(res.first), (double)(res.second));
  return 0;
}
