#include <bits/stdc++.h>
using namespace std;
int Rand(int x) { return rand() * rand() % x + 1; }
const int INF = 0x3f3f3f3f, N = 2000005, M = 2000005, MOD = 1e9 + 7;
struct node {
  double x, y, r;
} p[N];
int dx[4] = {1, -1, 0, 0}, dy[4] = {0, 0, 1, -1};
double g[4];
double dfs(double x, double y) {
  double res = 0;
  for (int i = 0; i < 3; i++) {
    g[i] = sqrt(((x - p[i].x) * (x - p[i].x)) + ((y - p[i].y) * (y - p[i].y))) /
           p[i].r;
  }
  for (int i = 0; i < 3; i++)
    res += ((g[i] - g[(i + 1) % 3]) * (g[i] - g[(i + 1) % 3]));
  return res;
}
int main() {
  ios::sync_with_stdio(false);
  cin.tie(0), cout.tie(0);
  double nx = 0, ny = 0;
  for (int i = 0; i < 3; i++) {
    cin >> p[i].x >> p[i].y >> p[i].r;
    nx += p[i].x, ny += p[i].y;
  }
  nx /= 3, ny /= 3;
  double t = 1;
  while (t > 1e-6) {
    double thx = dfs(nx, ny), ths;
    int fg = -1;
    for (int i = 0; i < 4; i++) {
      ths = dfs(nx + t * dx[i], ny + t * dy[i]);
      if (ths < thx) thx = ths, fg = i;
    }
    if (fg != -1)
      nx += t * dx[fg], ny += t * dy[fg];
    else
      t /= 2;
  }
  if (dfs(nx, ny) < 1e-6) cout << nx << " " << ny << endl;
  return 0;
}
