#include <bits/stdc++.h>
int a, b, l;
double getDist(double x1, double y1, double x2, double y2, double x3,
               double y3) {
  double vet = (x3 - x1) * (y2 - y1) - (y3 - y1) * (x2 - x1);
  if (vet <= 0) {
    return 0;
  }
  double interno = (x3 - x1) * (x2 - x1) + (y3 - y1) * (y2 - y1);
  double interno2 = (x3 - x2) * (x1 - x2) + (y3 - y2) * (y1 - y2);
  return vet / l;
}
double f(double x) {
  double y = sqrt(l * l - x * x);
  return getDist(y, 0, 0, x, b, a);
}
int main() {
  scanf("%d%d%d", &a, &b, &l);
  if (a > b) {
    int t = a;
    a = b;
    b = t;
  }
  double w;
  if (l <= a) {
    w = l;
  } else if (l <= b) {
    w = a;
  } else {
    double ini, fim;
    ini = 0;
    fim = l;
    for (int i = 0; i < 100; i++) {
      double med1 = (2 * ini + fim) / 3;
      double med2 = (ini + 2 * fim) / 3;
      if (f(med1) < f(med2)) {
        fim = med2;
      } else {
        ini = med1;
      }
    }
    w = f(ini);
    if (w > l) {
      w = l;
    }
  }
  if (w < 1E-7) {
    printf("My poor head =(\n");
  } else {
    printf("%.7lf\n", w);
  }
  return 0;
}
