#include <bits/stdc++.h>
const int maxn = 1010;
const long double pi = std::acos(-1);
using std::cin;
using std::cout;
int w, h, n;
int a[maxn], b[maxn];
inline void up(long double& x, long double y) {
  if (x < y) x = y;
}
inline long double calc(const long double& x, const long double& y) {
  long double min = 1. / 0, semin = 1. / 0;
  for (int i = 0; i < n; ++i) {
    long double dist = (x - a[i]) * (x - a[i]) + (y - b[i]) * (y - b[i]);
    if (dist < min)
      semin = min, min = dist;
    else if (dist < semin)
      semin = dist;
  }
  return semin;
}
inline long double rd() {
  static std::mt19937 mt(time(0));
  return (long double)mt() / mt.max();
}
inline long double test() {
  long double sx = rd() * w, sy = rd() * h, v = calc(sx, sy);
  for (long double t = 0.4; t >= 1e-10; t *= 0.995) {
    long double tx = sx + (rd() - 0.5) * t * w;
    long double ty = sy + (rd() - 0.5) * t * h;
    if (tx < 0) tx = 0;
    if (tx > w) tx = w;
    if (ty < 0) ty = 0;
    if (ty > h) ty = h;
    long double vv = calc(tx, ty);
    if (vv > v || exp((vv - v) / t) > rd()) sx = tx, sy = ty, v = vv;
  }
  return v;
}
int main() {
  std::ios::sync_with_stdio(false), cin.tie(0);
  cin >> w >> h >> n;
  for (int i = 0; i < n; ++i) {
    cin >> a[i] >> b[i];
  }
  long double ans = 0;
  for (int i = 0; i < 100; ++i) up(ans, test());
  printf("%.12Lf\n", sqrtl(ans));
}
