#include <bits/stdc++.h>
using namespace std;
double x[3], y[3], r[3];
double dt = 0.75, eps = 1e-5, ans;
double x1 = 0, y2 = 0, ovo, ovo2, ci = 1;
double f(double xq, double yq) {
  double sum[3] = {0, 0, 0};
  for (int i = 0; i < 3; i++) {
    sum[i] = sqrt((x[i] - xq) * (x[i] - xq) + (y[i] - yq) * (y[i] - yq)) / r[i];
  }
  double sum2 = 0, pj = (sum[0] + sum[1] + sum[2]) / 3;
  for (int i = 0; i < 3; i++) {
    sum2 += (sum[(i + 1) % 3] - sum[i]) * (sum[(i + 1) % 3] - sum[i]);
  }
  ovo2 = sum[0];
  return sum2 * 1e5;
}
void SA() {
  double T = 2000 / ci, nowans = 0;
  double nx1 = x1, ny2 = y2;
  while (T > eps) {
    double qwq = ((rand() * 1.0 / RAND_MAX) > 0.5 ? -1 : 1) * rand() * T * 1 /
                 RAND_MAX,
           qwq2 = ((rand() * 1.0 / RAND_MAX) > 0.5 ? -1 : 1) * rand() * T * 1 /
                  RAND_MAX;
    if (fabs(nx1 + qwq) > 1000 || fabs(ny2 + qwq2) > 1000) {
      continue;
    }
    double ans2 = f(qwq + nx1, qwq2 + ny2);
    if (ans2 < ans || (ans2 - ans < eps && ovo < ovo2)) {
      ans = nowans = ans2;
      x1 = nx1 + qwq;
      y2 = ny2 + qwq2;
      nx1 += qwq, ny2 += qwq2;
    } else if (exp((-ans2 + ans) / T) * RAND_MAX > rand())
      nowans = ans2, nx1 += qwq, ny2 += qwq2;
    T *= dt;
  }
  return;
}
void Slove() {
  ans = f(x1, y2);
  ovo = sqrt((x[0] - x1) * (x[0] - x1) + (y[0] - y2) * (y[0] - y2)) / r[0];
  SA();
  SA();
  SA();
  SA();
  SA();
  SA();
  SA();
  SA();
  SA();
  SA();
  SA();
  SA();
  SA();
  SA();
  while ((double)clock() / CLOCKS_PER_SEC < 0.95) SA();
}
int main() {
  srand(time(NULL));
  srand(rand());
  srand(rand());
  srand(rand());
  srand(rand());
  for (int i = 0; i < 3; i++) {
    scanf("%lf%lf%lf", &x[i], &y[i], &r[i]);
    x1 += x[i] / 3;
    y2 += y[i] / 3;
  }
  Slove();
  if (f(x1, y2) < eps * 100) printf("%.5lf %.5lf", x1, y2);
}
