#include <bits/stdc++.h>
using namespace std;
const double eps = 1e-8;
int sgn(double a) { return (a > eps) - (a < -eps); }
struct point {
  double x, y;
  point(double x = 0, double y = 0) : x(x), y(y) {}
  inline point operator+(const point &a) { return point(x + a.x, y + a.y); }
  inline point operator-(const point &a) { return point(x - a.x, y - a.y); }
  inline double operator^(const point &a) { return x * a.y - y * a.x; }
  inline double operator*(const point &a) { return x * a.x + y * a.y; }
  inline double nor() { return sqrtl(x * x + y * y); }
  inline bool operator<(const point &a) const {
    if (fabs(x - a.x) > eps) return x + eps < a.x;
    return y + eps < a.y;
  }
  void input() { scanf("%lf%lf", &x, &y); }
  void print() { printf("%.0lf %.0lf\n", x, y); }
};
double R;
inline bool ok(point d, point e, point f) {
  double s = f - e ^ d - e;
  return sgn(s) <= 0;
}
inline bool OK(point d, point e, point f) {
  double s = f - e ^ d - e;
  if (sgn((f - e) * (d - e)) >= 0) return 0;
  return (d - e).nor() * (e - f).nor() * (f - d).nor() + eps > 2 * s * R;
}
inline double calc(point d, point e) {
  double alp = asinl(max((double)-1, min((double)1, (d - e).nor() / (2 * R))));
  return R * R * (alp - 0.5 * sin(2 * alp));
}
const int NN = 202020;
point p[NN], q[NN];
int main() {
  int n;
  scanf("%d%lf", &n, &R);
  for (int i = 0; i < n; i++) p[i].input();
  sort(p, p + n);
  if (n == 1) {
    puts("0");
    return 0;
  }
  int m = 0;
  for (int i = 0; i < n; i++) {
    while (m > 1 && ok(q[m - 2], q[m - 1], p[i])) m--;
    q[m++] = p[i];
  }
  for (int i = n - 1, j = m; i--;) {
    while (m > j && ok(q[m - 2], q[m - 1], p[i])) m--;
    q[m++] = p[i];
  }
  m--;
  n = m;
  for (int i = 0; i < m; i++) p[i] = q[i];
  int st = 0, ed = 1;
  for (int i = 2; i < n; i++) {
    if (OK(p[ed], p[i], p[st])) continue;
    while (st < ed && OK(p[i], p[st], p[st + 1])) st++;
    while (st < ed && OK(p[ed - 1], p[ed], p[i])) ed--;
    p[++ed] = p[i];
  }
  p[++ed] = p[st];
  double ans = 0;
  double tmp = 0;
  for (int i = st; i < ed; i++) {
    ans += p[i] ^ p[i + 1];
    tmp += calc(p[i], p[i + 1]);
  }
  ans /= 2;
  printf("%.6lf\n", ans + tmp);
  return 0;
}
