#include <bits/stdc++.h>
using namespace std;
template <typename T>
void chkmax(T &x, T y) {
  x = x > y ? x : y;
}
template <typename T>
void chkmin(T &x, T y) {
  x = x < y ? x : y;
}
template <typename T>
void read(T &x) {
  x = 0;
  int f = 1;
  char c = getchar();
  while (!isdigit(c)) {
    if (c == '-') f = -1;
    c = getchar();
  }
  while (isdigit(c)) x = x * 10 + c - '0', c = getchar();
  x *= f;
}
const int N = 3010;
const double pi = acos(-1);
int a[N];
int main() {
  int n, L;
  read(n), read(L);
  for (int i = 1; i <= n; i++) read(a[i]);
  double sx = 0, sy = 0;
  for (int i = 1; i <= n; i++)
    for (int j = i + 1; j <= n; j++) {
      sx += cos(pi * (a[i] + a[j]) / L) * (n - (j - i + 1));
      sx += cos(pi * (a[i] + a[j] + L) / L) * (j - i - 1);
      sy += sin(pi * (a[i] + a[j]) / L) * (n - (j - i + 1));
      sy += sin(pi * (a[i] + a[j] + L) / L) * (j - i - 1);
    }
  double sum = 1.0l * n * (n - 1) * (n - 2) / 6;
  sx /= sum, sy /= sum;
  cout << fixed << setprecision(10) << sx << ' ' << sy << '\n';
  return 0;
}
