#include <bits/stdc++.h>
using namespace std;
const double EPS = 1e-8;
double a, b, l, lo, hi, lx, hx, lv, hv, sol;
double dot(const complex<double> &a, const complex<double> &b) {
  return real(conj(a) * b);
}
struct L : public vector<complex<double> > {
  L(const complex<double> &a, const complex<double> &b) {
    push_back(a);
    push_back(b);
  }
  L() {}
};
complex<double> projection(const L &l, const complex<double> &p) {
  double t = dot(p - l[0], l[0] - l[1]) / norm(l[0] - l[1]);
  return l[0] + t * (l[0] - l[1]);
}
double distanceLP(const L &l, const complex<double> &p) {
  return abs(p - projection(l, p));
}
double val(double x) {
  complex<double> corner = complex<double>(a, b);
  complex<double> pl = complex<double>(0, x);
  complex<double> pr = complex<double>(sqrt(l * l - x * x), 0);
  return distanceLP(L(pl, pr), corner);
}
int main() {
  cout << setprecision(10) << fixed;
  cin >> a >> b >> l;
  if (a > b) swap(a, b);
  if (l <= a) {
    cout << l << endl;
  } else if (l <= b) {
    cout << a << endl;
  } else {
    lo = 0;
    hi = l;
    for (int it = 0; it < 1000; it++) {
      lx = lo + 1 * (hi - lo) / 3;
      hx = lo + 2 * (hi - lo) / 3;
      lv = val(lx);
      hv = val(hx);
      if (lv < hv)
        hi = hx;
      else
        lo = lx;
    }
    sol = val(lo);
    if (sol < EPS)
      cout << "My poor head =(" << endl;
    else
      cout << sol << endl;
  }
}
