#include <bits/stdc++.h>
using namespace std;
const long long mod = 1000000007;
double INF = 1e100;
double EPS = 1e-7;
struct PT {
  double x, y;
  PT() {}
  PT(double x, double y) : x(x), y(y) {}
  PT(const PT &p) : x(p.x), y(p.y) {}
  PT operator+(const PT &p) const { return PT(x + p.x, y + p.y); }
  PT operator-(const PT &p) const { return PT(x - p.x, y - p.y); }
  PT operator*(double c) const { return PT(x * c, y * c); }
  PT operator/(double c) const { return PT(x / c, y / c); }
  bool operator<(const PT &p) const {
    return make_pair(x, y) < make_pair(p.x, p.y);
  }
  bool operator==(const PT &p) const { return !(*this < p) && !(p < *this); }
};
double dot(PT p, PT q) { return p.x * q.x + p.y * q.y; }
double dist2(PT p, PT q) { return dot(p - q, p - q); }
double cross(PT p, PT q) { return p.x * q.y - p.y * q.x; }
PT norm(PT x, double l) { return x * sqrt(l * l / dot(x, x)); }
istream &operator>>(istream &is, PT &p) { return is >> p.x >> p.y; }
ostream &operator<<(ostream &os, const PT &p) {
  return os << "(" << p.x << "," << p.y << ")";
}
PT RotateCCW90(PT p) { return PT(-p.y, p.x); }
PT RotateCW90(PT p) { return PT(p.y, -p.x); }
PT RotateCCW(PT p, double t) {
  return PT(p.x * cos(t) - p.y * sin(t), p.x * sin(t) + p.y * cos(t));
}
PT ProjectPointLine(PT a, PT b, PT c) {
  return a + (b - a) * dot(c - a, b - a) / dot(b - a, b - a);
}
PT ProjectPointSegment(PT a, PT b, PT c) {
  double r = dot(c - a, b - a) / dot(b - a, b - a);
  if (r < 0) return a;
  if (r > 1) return b;
  return a + (b - a) * r;
}
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(nullptr);
  cout << fixed << setprecision(8);
  double a, b, l;
  cin >> a >> b >> l;
  if (fmax(a, b) >= l) {
    cout << fmin(l, fmin(a, b)) << '\n';
    return 0;
  }
  if (b > a) swap(b, a);
  double lo = 0.0, hi = l;
  for (int i = 0; i < 5000; i++) {
    double md1 = (2 * lo + hi) / 3;
    double md2 = (lo + 2 * hi) / 3;
    double f1 = dist2(ProjectPointSegment(
                          PT(md1, 0), PT(0, sqrt(l * l - md1 * md1)), PT(a, b)),
                      PT(a, b));
    double f2 = dist2(ProjectPointSegment(
                          PT(md2, 0), PT(0, sqrt(l * l - md2 * md2)), PT(a, b)),
                      PT(a, b));
    if (f1 <= f2) {
      hi = md2;
    } else {
      lo = md1;
    }
  }
  double res = sqrt(dist2(
      ProjectPointSegment(PT(lo, 0), PT(0, sqrt(l * l - lo * lo)), PT(a, b)),
      PT(a, b)));
  if (res <= EPS) {
    cout << "My poor head =(\n";
  } else
    cout << res << '\n';
  return 0;
}
