#include <bits/stdc++.h>
using namespace std;
const double eps = 1e-8;
const double pi = acos(-1.);
inline bool eq(double a, double b) { return abs(a - b) < eps; }
inline bool ls(double a, double b) { return a <= b - eps; }
inline bool gt(double a, double b) { return a >= b + eps; }
inline bool le(double a, double b) { return a < b + eps; }
inline bool ge(double a, double b) { return a > b - eps; }
inline bool zr(double lhs) { return fabs(lhs) < eps; }
inline bool nz(double lhs) { return fabs(lhs) >= eps; }
inline bool ps(double lhs) { return lhs >= eps; }
inline bool nn(double lhs) { return lhs >= -eps; }
inline bool ng(double lhs) { return lhs < -eps; }
inline bool np(double lhs) { return lhs < eps; }
double a, b, l;
double len(pair<double, double> a) {
  return sqrt(a.first * a.first + a.second * a.second);
}
double cal(double al) {
  return (a * tan(al) + b - l * sin(al)) / len({tan(al), 1.});
}
int main() {
  scanf("%lf%lf%lf", &a, &b, &l);
  if (l <= min(a, b))
    printf("%lf\n", l);
  else if (l <= max(a, b))
    printf("%lf\n", min(a, b));
  else {
    double fz = acos(a / l / 4);
    double l1 = 0, r1 = fz;
    while (!eq(l1, r1)) {
      double m1 = l1 / 3 * 2 + r1 / 3, m2 = l1 / 3 + r1 / 3 * 2;
      double v1 = cal(m1), v2 = cal(m2);
      if (le(v1, v2))
        r1 = m2;
      else
        l1 = m1;
    }
    double tmp = cal(l1);
    if (np(tmp))
      printf("My poor head =(\n");
    else {
      printf("%.12lf\n", tmp);
    }
  }
  return 0;
}
