#include <bits/stdc++.h>
using namespace std;
const double pi = acos(-1);
const int dx[4] = {0, 0, -1, 1};
const int dy[4] = {1, -1, 0, 0};
struct P {
  double x, y;
} a[1005];
int n;
double val;
double calc(double x, double y) {
  double mn1 = 1 << 30, mn2 = 1 << 30;
  for (int i = (int)(1); i <= (int)(n); i++) {
    double v =
        sqrt(((a[i].x - x) * (a[i].x - x)) + ((a[i].y - y) * (a[i].y - y)));
    if (v < mn1)
      mn2 = mn1, mn1 = v;
    else
      mn2 = min(mn2, v);
  }
  return mn2;
}
double w, h, ans;
int main() {
  srand(time(NULL));
  double ans = 0;
  scanf("%lf%lf%d", &w, &h, &n);
  for (int i = (int)(1); i <= (int)(n); i++) scanf("%lf%lf", &a[i].x, &a[i].y);
  for (int T = (int)(1); T <= (int)(60); T++) {
    double x = rand() * rand() % (int)w;
    double y = rand() * rand() % (int)h;
    double stp = h;
    val = 0;
    val = calc(x, y);
    for (; stp > 1e-10;) {
      bool chg = 0;
      double X, Y;
      for (int j = (int)(0); j <= (int)(3); j++) {
        double XX = x + stp * dx[j];
        double YY = y + stp * dy[j];
        if (XX < 0 || XX > w || YY < 0 || YY > h) continue;
        double nval = calc(XX, YY);
        if (nval > val) val = nval, X = XX, Y = YY, chg = 1;
      }
      if (chg) x = X, y = Y;
      stp *= 0.9;
    }
    ans = max(ans, val);
  }
  printf("%.15lf\n", ans);
}
