#include <bits/stdc++.h>
double a, b, L;
double dist(double y) {
  double x = L * sqrt(1 - (y * y));
  y *= L;
  double v1x = 0 - x;
  double v1y = y - 0;
  double v2x = b - x;
  double v2y = a - 0;
  double vp = -v1x * v2y + v1y * v2x;
  vp /= sqrt(v1x * v1x + v1y * v1y);
  return vp;
}
int main() {
  int z, x, c;
  scanf("%d%d%d", &z, &x, &c);
  a = z;
  b = x;
  L = c;
  double eps = 1e-10;
  int cnt = 10000;
  double f[5];
  double p[5];
  p[0] = 0;
  p[4] = 1;
  f[0] = dist(p[0]);
  f[4] = dist(p[4]);
  while (--cnt > 0 && (fabs(p[4] - p[0]) > eps || fabs(f[4] - f[0]) > eps)) {
    p[1] = (p[0] * 3 + p[4]) / 4;
    p[2] = (p[0] + p[4]) / 2;
    p[3] = (p[0] + p[4] * 3) / 4;
    f[2] = dist(p[2]);
    f[1] = dist(p[1]);
    f[3] = dist(p[3]);
    double mi = 1e100;
    int pmi = 0;
    int i;
    for (i = 0; i < 5; i++) {
      if (f[i] < mi) {
        mi = f[i];
        pmi = i;
      }
    }
    if (pmi == 0) {
      p[4] = p[1];
      f[4] = f[1];
    } else if (pmi == 4) {
      p[0] = p[3];
      f[0] = f[3];
    } else {
      p[0] = p[pmi - 1];
      f[0] = f[pmi - 1];
      p[4] = p[pmi + 1];
      f[4] = f[pmi + 1];
    }
  }
  double res = f[0];
  int i;
  for (i = 0; i < 5; i++) {
    if (f[i] < res) res = f[i];
  }
  if (L <= a && res < b) {
    res = b;
  } else if (L <= b && res < a) {
    res = a;
  }
  if (res > L) {
    res = L;
  }
  if (res <= 0) {
    printf("My poor head =(\n");
    return 0;
  }
  printf("%.7f\n", res);
  return 0;
}
