#include <bits/stdc++.h>
using namespace std;
template <class T>
T gcd(T a, T b) {
  return b ? gcd(b, a % b) : a;
}
mt19937 rng(chrono::steady_clock::now().time_since_epoch().count());
const double EPS = 1e-9;
const double PI = acos(-1.);
const long long LL_INF = 1e17 + 16;
const int INF = 1e9 + 10;
const long long MOD = 1e9 + 7;
const int MAXN = 2e5 + 5;
long double calc(int a, int b, int m, long double t) {
  long double sq = sqrt(max((long double)0., m * m - t * t));
  long double val = a * sq + b * t - t * sq;
  return val;
}
void solve() {
  int a, b, m;
  cin >> a >> b >> m;
  long double lim = min(min(a, b), m);
  if (a >= m || b >= m) {
    printf("%.12lf\n", (double)lim);
    return;
  }
  if (m * m >= 2 * (a + b) * (a + b)) {
    printf("My poor head =(\n");
    return;
  }
  long double l = 0., r = m;
  for (int it = (0); it < (int)(500); it++) {
    long double l1 = ((long double)2. * l + r) / (long double)3.;
    long double r1 = (l + (long double)2. * r) / (long double)3.;
    long double vl = calc(a, b, m, l1);
    long double vr = calc(a, b, m, r1);
    if (vl < vr) {
      r = r1;
    } else {
      l = l1;
    }
  }
  long double ans = calc(a, b, m, (l + r) / (long double)2.) / m;
  if (ans < EPS) {
    printf("My poor head =(\n");
    return;
  }
  printf("%.12lf\n", (double)ans);
}
int main() {
  int t = 1;
  while (t--) {
    solve();
  }
}
