#include <bits/stdc++.h>
using namespace std;
struct cycle {
  double x;
  double y;
  double r;
} cycles[3];
double dir[4][2] = {{1, 0}, {-1, 0}, {0, 1}, {0, -1}};
double dis(double x1, double y1, double x2, double y2) {
  return sqrt((x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2));
};
double evl(double x, double y) {
  int i, j;
  double val = 0.0;
  double angl[3] = {0.0};
  for (i = 0; i < 3; i++) {
    angl[i] = dis(x, y, cycles[i].x, cycles[i].y) / cycles[i].r;
  }
  for (i = 0; i < 3; i++) {
    for (j = i + 1; j < 3; j++) {
      val += (angl[i] - angl[j]) * (angl[i] - angl[j]);
    }
  }
  return val;
};
int main() {
  int i, j, bestdir;
  double Td, x, y, bestval, tx, ty, tval;
  x = y = 0;
  for (i = 0; i < 3; i++) {
    scanf("%lf%lf%lf", &cycles[i].x, &cycles[i].y, &cycles[i].r);
    x += cycles[i].x;
    y += cycles[i].y;
  }
  Td = 10;
  bestval = evl(x, y);
  while (Td > 1e-5) {
    bestdir = -1;
    for (i = 0; i < 4; i++) {
      tx = x + Td * dir[i][0];
      ty = y + Td * dir[i][1];
      if (tval = evl(tx, ty), tval < bestval) {
        bestval = tval;
        bestdir = i;
      }
    }
    if (bestdir == -1) {
      Td *= 0.618;
    } else {
      x += Td * dir[bestdir][0];
      y += Td * dir[bestdir][1];
    }
  }
  if (bestval < 1e-5) {
    printf("%.5lf %.5lf\n", x, y);
  }
  return 0;
}
