#include <bits/stdc++.h>
using namespace std;
int ceildiv(int one, int two) {
  if (one % two == 0) {
    return one / two;
  } else {
    return one / two + 1;
  }
}
int power(int n, int pow, int m) {
  if (pow == 0) return 1;
  if (pow % 2 == 0) {
    long long x = power(n, pow / 2, m);
    return (x * x) % m;
  } else
    return (power(n, pow - 1, m) * n) % m;
}
int gcd(int a, int b) {
  if (!b) return a;
  return gcd(b, a % b);
}
int factorial(int n, int mod) {
  if (n > 1)
    return (n * factorial(n - 1, mod)) % mod;
  else
    return 1;
}
int lcm(int a, int b) { return (a * b) / gcd(a, b); }
vector<int> read(int n) {
  vector<int> a;
  for (int i = 0; i < n; i++) {
    int x;
    cin >> x;
    a.push_back(x);
  }
  return a;
}
vector<vector<int>> adj;
void init(int n) {
  for (int i = 0; i <= n; i++) {
    vector<int> a;
    adj.push_back(a);
  }
}
long double distance(int x, int y, int x1, int y1, int x2, int y2) {
  long double A = x - x1;
  long double B = y - y1;
  long double C = x2 - x1;
  long double D = y2 - y1;
  long double dot = A * C + B * D;
  long double len_sq = C * C + D * D;
  long double param = -1;
  if (len_sq != 0) {
    param = dot / len_sq;
  }
  long double xx, yy;
  if (param < 0) {
    xx = x1;
    yy = y1;
  } else if (param > 1) {
    xx = x2;
    yy = y2;
  } else {
    xx = x1 + param * C;
    yy = y1 + param * D;
  }
  long double dx = x - xx;
  long double dy = y - yy;
  return (long double)dx * (long double)dx + (long double)dy * (long double)dy;
}
void solve() {
  int n;
  cin >> n;
  long double px, py;
  cin >> px >> py;
  long double mx = 0, mn = (long double)1000000000 * (long double)1000000000;
  vector<pair<int, int>> pnt;
  for (int i = 0; i < n; i++) {
    long double x, y;
    cin >> x >> y;
    pnt.push_back({x, y});
  }
  for (int i = 0; i < n; i++) {
    long double x = pnt[i].first, y = pnt[i].second;
    int f = i, s = (i + 1) % n;
    long double distmn = distance(px, py, pnt[f].first, pnt[f].second,
                                  pnt[s].first, pnt[s].second);
    long double distmx =
        ((long double)px - (long double)x) *
            ((long double)px - (long double)x) +
        ((long double)py - (long double)y) * ((long double)py - (long double)y);
    mn = min((long double)mn, (long double)distmn);
    mx = max((long double)mx, (long double)distmx);
  }
  long double ans =
      ((long double)mx - (long double)mn) * (long double)2 * acos(0.0);
  cout << fixed << setprecision(12) << ans << '\n';
}
int32_t main() {
  ios_base::sync_with_stdio(false);
  cin.tie(0);
  ;
  int t = 1;
  while (t--) {
    solve();
  }
}
