#include <bits/stdc++.h>
using namespace std;
template <typename T>
T abs(T a) {
  return a < 0 ? -a : a;
}
template <typename T>
T sqr(T a) {
  return a * a;
}
const int INF = (int)1e9;
const long double EPS = 1e-9;
const long double PI = 3.1415926535897932384626433832795;
long double a, b, h;
inline pair<long double, long double> rotate(
    const pair<long double, long double>& a, const long double& ang) {
  return pair<long double, long double>(
      a.first * cos(ang) + a.second * sin(ang),
      -a.first * sin(ang) + a.second * cos(ang));
}
inline long double dist(const long double& w, const long double& h,
                        const long double& ang) {
  pair<long double, long double> pa(w * cos(ang), 0);
  pair<long double, long double> push_back(0, w * sin(ang));
  pair<long double, long double> v =
      rotate(pair<long double, long double>(h, 0), ang - PI / 2);
  pa.first += v.first;
  pa.second += v.second;
  push_back.first += v.first;
  push_back.second += v.second;
  long double A, B, C;
  A = push_back.second - pa.second;
  B = pa.first - push_back.first;
  C = -A * pa.first - B * pa.second;
  return (A * b + B * a + C) / sqrtl(A * A + B * B);
}
inline long double findMaxAng(const long double& w, const long double& h) {
  long double lf = 0;
  long double rg = PI / 2;
  for (int i = 0; i < int(100); ++i) {
    long double mid = lf + (rg - lf) / 2;
    if (w * cos(mid) + h * sin(mid) > b)
      lf = mid;
    else
      rg = mid;
  }
  return lf;
}
inline bool check(const long double& w, const long double& h) {
  if (a + EPS < h) return false;
  if (w <= b + EPS) return true;
  long double lf = 0;
  long double rg = findMaxAng(w, h);
  for (int i = 0; i < int(200); ++i) {
    long double d = (rg - lf) / 3;
    long double ml = lf + d;
    long double mr = rg - d;
    if (dist(w, h, ml) > dist(w, h, mr))
      lf = ml;
    else
      rg = mr;
  }
  return dist(w, h, lf) > -EPS;
}
int main() {
  cin >> a >> b >> h;
  long double lf = 0;
  long double rg = h;
  for (int i = 0; i < int(100); ++i) {
    long double mid = lf + ((rg - lf) / 2);
    if (check(h, mid) || check(mid, h))
      lf = mid;
    else
      rg = mid;
  }
  if (lf < EPS) {
    puts("My poor head =(");
  } else {
    cout.precision(10);
    cout << fixed << lf << endl;
  }
  return 0;
}
