#include <bits/stdc++.h>
using namespace std;
long long int mod = 1e9 + 7;
const double error = 1e-7;
const double PI = acos(-1);
mt19937 rng(
    (unsigned int)chrono::system_clock::now().time_since_epoch().count());
inline long long int MOD(long long int x, long long int m = mod) {
  long long int y = x % m;
  return (y >= 0) ? y : y + m;
}
const int inf = 1e9 + 2;
const long long int infl = 1e18 + 1;
const int nmax = 1e3 + 10;
double val(double x, double a, double b, double l) {
  double y = sqrt(l * l - x * x);
  return (a * y + b * x - x * y) / l;
}
double ternary(double a, double b, double l) {
  double lo = 0, hi = l;
  while (hi - lo > error / 2) {
    double m1 = (lo * 2.0 + hi) / 3.0;
    double m2 = (lo + hi * 2.0) / 3.0;
    double v1 = val(m1, a, b, l);
    double v2 = val(m2, a, b, l);
    if (v1 < v2)
      hi = m2;
    else
      lo = m1;
  }
  return val((hi + lo) / 2.0, a, b, l);
}
int main() {
  double a, b, l;
  cin >> a >> b >> l;
  if (max(a, b) >= l) {
    cout << fixed << setprecision(10) << min({a, b, l});
    return 0;
  }
  double ans = ternary(a, b, l);
  if (ans <= error)
    cout << "My poor head =(";
  else
    cout << fixed << setprecision(10) << ans;
}
