#include <bits/stdc++.h>
using namespace std;
int main() {
  ios::sync_with_stdio(0);
  cin.tie(0);
  auto cal = [](double x, double y) { return x * x + y * y; };
  const double PI = acos(-1);
  default_random_engine e(time(NULL));
  uniform_real_distribution<double> u(0.0, 1.0);
  double X, Y;
  int n;
  cin >> X >> Y >> n;
  vector<pair<double, double>> a(n);
  for (auto& i : a) cin >> i.first >> i.second;
  vector<double> p(n);
  auto check = [&](double x, double y) {
    for (int i = 0; i < n; i++) {
      p[i] = cal(a[i].first - x, a[i].second - y);
    }
    nth_element(p.begin(), p.begin() + 1, p.end());
    return p[1];
  };
  double ansx, ansy, fin = 0;
  for (int i = 0; i < 10; i++) {
    double sx = X * u(e);
    double sy = Y * u(e);
    double eps = 1e-11;
    double t = sqrt(cal(X, Y));
    double tp = check(sx, sy);
    while (t > eps) {
      for (int j = 0; j < 8; j++) {
        double ang = u(e) * 2 * PI;
        double tx = sx + cos(ang) * t;
        double ty = sy + sin(ang) * t;
        tx = min(X, max(0.0, tx)), ty = min(Y, max(0.0, ty));
        double ans = check(tx, ty);
        if (tp < ans) {
          tp = ans;
          sx = tx;
          sy = ty;
        }
      }
      t *= 0.95;
    }
    if (fin < tp) {
      fin = tp;
      ansx = sx;
      ansy = sy;
    }
  }
  cout << fixed << setprecision(17) << sqrt(fin);
}
