#include <bits/stdc++.h>
using namespace std;
const int N = 6010;
int n, a[N], L;
const long double pi = acos(-1);
struct dot {
  long double x, y;
} O, ans;
dot operator+(dot a, dot b) { return (dot){a.x + b.x, a.y + b.y}; }
dot operator-(dot a, dot b) { return (dot){a.x - b.x, a.y - b.y}; }
dot operator*(dot a, long double b) { return (dot){a.x * b, a.y * b}; }
dot ang(long double arc) { return (dot){cos(arc), sin(arc)}; }
dot operator*(dot a, dot b) {
  return (dot){a.x * b.x - a.y * b.y, a.x * b.y + a.y * b.x};
}
int main() {
  cin >> n >> L;
  for (int i = 1; i <= n; i++) scanf("%d", &a[i]);
  for (int i = 1; i <= n; i++) a[i + n] = a[i] + L;
  for (int i = 1; i <= n; i++) {
    dot sum = O, B = ang(2 * pi * a[i] / L);
    for (int j = i + 1; j < i + n; j++) {
      dot M = O - ang(pi * (a[j] + a[i]) / L);
      ans = ans + M * (j - i - 1) + (B - M) * sum;
      sum = sum + ang(pi * (a[j] - a[i]) / L);
    }
  }
  ans = ans * (2.0 / n / (n - 1) / (n - 2));
  printf("%.12Lf %.12Lf\n", ans.x, ans.y);
}
