#include <bits/stdc++.h>
using namespace std;
using ll = long long;
const ll MOD = 1000000007;
using ld = long double;
const ld pi = atan2l(0, -1);
ld T[3010], ct[3010], st[3010], ctr[3010], str[3010];
complex<ld> C[3010];
int main() {
  int N;
  cin >> N;
  ld L;
  cin >> L;
  for (int i = 0; i < N; i++) {
    cin >> T[i];
    T[i] *= 2 * pi;
    T[i] /= L;
    ct[i] = cosl(T[i] / 2);
    st[i] = sinl(T[i] / 2);
    C[i] = {cosl(T[i]), sinl(T[i])};
  }
  ctr[0] = 0, str[0] = 0;
  for (int i = 0; i < N; i++) {
    ctr[i + 1] = ctr[i] + ct[i];
    str[i + 1] = str[i] + st[i];
  }
  complex<ld> Z, A, X = {0, 0};
  ld ssm, csm, ang, r, cp, sp;
  for (int i = 0; i < N; i++) {
    for (int j = i + 1; j < N - 1; j++) {
      ang = (T[i] + T[j]) / 2;
      Z = {cosl(ang), sinl(ang)};
      r = abs(Z - C[i]);
      cp = cosl(ang / 2);
      sp = sinl(ang / 2);
      ssm = str[N] - str[j + 1];
      csm = ctr[N] - ctr[j + 1];
      A = {(ld)(N - j - 1) - r * cp * ssm + r * sp * csm,
           r * cp * csm + r * sp * ssm};
      X += A * Z;
    }
  }
  X /= N * (N - 1) * (N - 2) / 6;
  printf("%.12Lf ", X.real());
  printf("%.12Lf\n", X.imag());
}
