#include <bits/stdc++.h>
using namespace std;
const double Eps = 1e-3;
int i;
struct Node {
  int mark;
  double xa, ya, xb, yb;
} I[5];
struct Line {
  int mark;
  double k, b;
  double x, y;
} L[12];
struct Circle {
  int mark;
  double x, y, r;
  double A, B, C, D, E;
  Circle friend operator-(const Circle &A, const Circle &B) {
    return (Circle){0,         A.x - B.x, A.y - B.y, A.r - B.r, A.A - B.A,
                    A.B - B.B, A.C - B.C, A.D - B.D, A.E - B.E};
  }
} C[10];
double ansx, ansy;
bool check;
inline bool Comp(Node A, Node B) { return A.mark < B.mark; }
inline double get_x(Line A, Line B) { return A.mark == 0 ? A.x : B.x; }
inline double get_y(Line A, Line B) { return A.mark == 1 ? A.y : B.y; }
inline bool equal(double x, double y) {
  return (x - y <= Eps) && (x - y >= -Eps);
}
inline double disa(Node A, Node B) {
  return sqrt((A.xa - B.xa) * (A.xa - B.xa) + (A.ya - B.ya) * (A.ya - B.ya));
}
inline double disb(Node A, Node B) {
  return sqrt((A.xb - B.xb) * (A.xb - B.xb) + (A.yb - B.yb) * (A.yb - B.yb));
}
inline Node Line_inter(Line A, Line B) {
  if (A.mark == B.mark && (A.mark == 1 || A.mark == 0))
    return (Node){0, 0, 0, 0, 0};
  if ((A.mark == 1 && B.mark == 0) || (A.mark == 0 && B.mark == 1))
    return (Node){1, get_x(A, B), get_y(A, B), 0, 0};
  if (A.mark == 1 && B.mark == 2)
    return (Node){1, (A.y - B.b) / B.k, A.y, 0, 0};
  if (A.mark == 2 && B.mark == 1)
    return (Node){1, (B.y - A.b) / A.k, B.y, 0, 0};
  if (A.mark == 2 && B.mark == 0) return (Node){1, B.x, B.x * A.k + A.b, 0, 0};
  if (A.mark == 0 && B.mark == 2) return (Node){1, A.x, A.x * B.k + B.b, 0, 0};
  return (Node){1, (A.b - B.b) / (B.k - A.k),
                (A.b - B.b) / (B.k - A.k) * A.k + A.b, 0, 0};
}
inline Node get_inter(Circle A, Circle B) {
  if ((A.mark == 0 && B.mark) || (A.mark && B.mark == 0)) {
    if (!A.mark) {
      Circle C;
      C = A, A = B, B = C;
    }
    double a = 1 + (B.C / B.D) * (B.C / B.D), del;
    double c = A.E - B.E * A.D / B.D + B.E * B.E / ((B.D) * (B.D));
    double b = (A.C - B.C * A.D / B.D + 2 * B.C * B.E / ((B.D) * (B.D)));
    if ((del = (b * b - 4 * a * c)) < -Eps) return (Node){0, 0, 0, 0, 0};
    double xa = (-b + sqrt(del)) / (2 * a), xb = (-b - sqrt(del)) / (2 * a);
    double ya = -B.C / B.D * xa - B.E / B.D, yb = -B.C / B.D * xb - B.E / B.D;
    return (Node){2, xa, ya, xb, yb};
  }
  if (!A.mark && !B.mark) {
    Line La, Lb;
    if (!A.C)
      La = (Line){1, 0, 0, 0, -A.E / A.D};
    else if (!A.D)
      La = (Line){0, 0, 0, -A.E / A.C, 0};
    else
      La = (Line){2, -A.C / A.D, -A.E / A.D, 0, 0};
    if (!B.C)
      Lb = (Line){1, 0, 0, 0, -B.E / B.D};
    else if (!B.D)
      Lb = (Line){0, 0, 0, -B.E / B.C, 0};
    else
      Lb = (Line){2, -B.C / B.D, -B.E / B.D, 0, 0};
    return Line_inter(La, Lb);
  }
  if (A.mark && B.mark) {
    Circle C = A - B;
    return get_inter(C, A);
  }
}
inline Circle make_rat(Circle A, Circle B) {
  double _k2 = (A.r / B.r) * (A.r / B.r);
  Circle Ans;
  double t;
  Ans.A = Ans.B = (_k2 - 1), Ans.C = -2 * (_k2 * B.x - A.x),
  Ans.D = -2 * (_k2 * B.y - A.y),
  Ans.E = (_k2 * B.x * B.x - A.x * A.x) + (_k2 * B.y * B.y - A.y * A.y),
  Ans.x = Ans.y = Ans.r = 0;
  if (Ans.A != 0)
    Ans.mark = 1, t = Ans.A, Ans.A /= t, Ans.B /= t, Ans.C /= t, Ans.D /= t,
    Ans.E /= t;
  else
    Ans.mark = 0;
  return Ans;
}
inline void make_for_Ans() {
  sort(I + 1, I + 3, Comp);
  if (I[1].mark <= 1)
    ansx = I[1].xa, ansy = I[1].ya;
  else {
    double A1, A11, B1, B11;
    I[1] = get_inter(C[4], C[5]);
    A1 = disa(I[1], (Node){0, C[1].x, C[1].y, 0, 0}) / C[1].r;
    A11 = disa(I[1], (Node){0, C[3].x, C[3].y, 0, 0}) / C[3].r;
    B1 = disb(I[1], (Node){0, 0, 0, C[1].x, C[1].y}) / C[1].r;
    B11 = disb(I[1], (Node){0, 0, 0, C[3].x, C[3].y}) / C[3].r;
    if (equal(A1, A11) && !equal(B1, B11))
      ansx = I[1].xa, ansy = I[1].ya;
    else if (!equal(A1, A11) && equal(B1, B11))
      ansx = I[1].xb, ansy = I[1].yb;
    else if (!equal(A1, A11) && !equal(B1, B11))
      check = 1;
    else {
      double Ja = sin(1 / A1), Jb = sin(1 / B1);
      if (Ja > Jb)
        ansx = I[1].xa, ansy = I[1].ya;
      else
        ansx = I[1].xb, ansy = I[1].yb;
    }
  }
}
int main() {
  for (i = 1; i <= 3; ++i) cin >> C[i].x >> C[i].y >> C[i].r;
  C[4] = make_rat(C[1], C[2]), C[5] = make_rat(C[2], C[3]),
  C[6] = make_rat(C[3], C[1]), I[1] = get_inter(C[4], C[5]),
  I[2] = get_inter(C[5], C[6]), I[3] = get_inter(C[4], C[6]);
  if (!I[1].mark || !I[2].mark || !I[3].mark) return putchar('\n'), 0;
  make_for_Ans();
  (!check) ? printf("%.5lf %.5lf", ansx, ansy) : 1;
  return 0;
}
