#include <bits/stdc++.h>
using namespace std;
namespace fastIO1 {
inline char read() {
  static const int IN_LEN = 1000000;
  static char buf[IN_LEN], *s, *t;
  return (s == t               ? t = (s = buf) + fread(buf, 1, IN_LEN, stdin),
          (s == t ? -1 : *s++) : *s++);
}
template <class T>
inline void read(T &x) {
  static bool iosig;
  static char c;
  for (iosig = false, c = read(); !isdigit(c); c = read()) {
    if (c == '-') iosig = true;
    if (c == -1) return;
  }
  for (x = 0; isdigit(c); c = read()) x = ((x + (x << 2)) << 1) + (c ^ '0');
  if (iosig) x = -x;
}
inline char readc(char &c) {
  for (c = read(); !isalpha(c) && !isdigit(c); c = read())
    if (c == -1) return 0;
}
const int OUT_LEN = 10000000;
char obuf[OUT_LEN], *ooh = obuf;
inline void print(char c) {
  if (ooh == obuf + OUT_LEN) fwrite(obuf, 1, OUT_LEN, stdout), ooh = obuf;
  *ooh++ = c;
}
template <class T>
inline void print(T x) {
  static int buf[30], cnt;
  if (x == 0)
    print('0');
  else {
    if (x < 0) print('-'), x = -x;
    for (cnt = 0; x; x /= 10) buf[++cnt] = x % 10 + 48;
    while (cnt) print((char)buf[cnt--]);
  }
}
inline void flush() { fwrite(obuf, 1, ooh - obuf, stdout); }
}  // namespace fastIO1
namespace fastIO2 {
template <class T>
inline void read(T &x) {
  static bool iosig;
  static char c;
  for (iosig = false, c = getchar(); !isdigit(c); c = getchar()) {
    if (c == '-') iosig = true;
    if (c == -1) return;
  }
  for (x = 0; isdigit(c); c = getchar()) x = ((x + (x << 2)) << 1) + (c ^ '0');
  if (iosig) x = -x;
}
}  // namespace fastIO2
using namespace fastIO1;
long long n, L, a[(3010)];
long double sx, sy;
long double PI = acos(-1);
signed main() {
  read(n), read(L), L *= 2;
  for (long long i = 1; i <= n; i++) read(a[i]), a[i] *= 2;
  for (long long i = 1; i <= n; i++)
    for (long long j = i + 1; j <= n; j++) {
      long long m1 = (a[i] + a[j]) / 2;
      long long m2 = (a[j] + (L - (a[j] - a[i])) / 2) % L;
      long double xa = cos(m1 / (long double)L * 2.0 * PI),
                  xb = cos(m2 / (long double)L * 2.0 * PI);
      long double ya = sin(m1 / (long double)L * 2.0 * PI),
                  yb = sin(m2 / (long double)L * 2.0 * PI);
      sx += (xa * (n - (j - i) - 1) + xb * (j - i - 1)) / ((n - 2) * 1.0),
          sy += (ya * (n - (j - i) - 1) + yb * (j - i - 1)) / ((n - 2) * 1.0);
    }
  printf("%.15Lf %.15Lf", sx / (1ll * n * (n - 1) / 6),
         sy / (1ll * n * (n - 1) / 6));
}
