#include <bits/stdc++.h>
using namespace std;
int INP, AM;
char BUF[(1 << 10) + 1], *inp = BUF;
const double PI = acos(-1.0);
long long a, b, l;
long double f(long double x0) {
  long double y0 = sqrt(l * (long double)l - x0 * x0);
  return (b * y0 + a * x0 - x0 * y0) / l;
}
long double get(long double left, long double right) {
  if (right - left <= 1e-10) return f(left);
  long double x1 = (left * 2 + right) / 3;
  long double x2 = (left + right * 2) / 3;
  long double y1 = f(x1), y2 = f(x2);
  if (y1 <= y2)
    return get(left, x2);
  else
    return get(x1, right);
}
int main() {
  while (cin >> a >> b >> l) {
    if (a > b) swap(a, b);
    if (l <= a) {
      cout << l << endl;
      continue;
    }
    if (l <= b) {
      cout << a << endl;
      continue;
    }
    long double res = min(min(f(0), f(l)), get(0, l));
    if (res < 0)
      puts("My poor head =(");
    else
      cout << (fixed) << setprecision(8) << res << endl;
  }
  return 0;
}
