#include <bits/stdc++.h>
using namespace std;
struct Node {
  double x, y, r;
} node[3], ans;
double dx[] = {0, 0, 1, -1};
double dy[] = {1, -1, 0, 0};
double get_dev() {
  double dis[3], ret = 0;
  for (int i = 0; i < 3; i++)
    dis[i] = sqrt((node[i].x - ans.x) * (node[i].x - ans.x) +
                  (node[i].y - ans.y) * (node[i].y - ans.y)) /
             node[i].r;
  for (int i = 0; i < 3; i++)
    ret += (dis[i] - dis[(i + 1) % 3]) * (dis[i] - dis[(i + 1) % 3]);
  return ret;
}
int main() {
  for (int i = 0; i < 3; i++) cin >> node[i].x >> node[i].y >> node[i].r;
  ans.x = (node[1].x + node[2].x + node[0].x) / 3;
  ans.y = (node[0].y + node[1].y + node[2].y) / 3;
  double dev = get_dev();
  double mul = 1;
  double err = 0.0000001;
  int relax = 1000000;
  double tdev;
  while (relax-- && err < dev) {
    bool flag = false;
    for (int i = 0; i < 4; i++) {
      ans.x += dx[i] * mul;
      ans.y += dy[i] * mul;
      tdev = get_dev();
      if (dev > tdev) {
        dev = tdev;
        flag = true;
      } else {
        ans.x -= dx[i] * mul;
        ans.y -= dy[i] * mul;
      }
    }
    if (!flag) mul *= 0.5;
  }
  if (dev < err) printf("%.5f %.5f", ans.x, ans.y);
  cout << endl;
  return 0;
}
