#include <bits/stdc++.h>
using namespace std;
namespace IO {
template <typename T>
inline void read(T &x) {
  x = 0;
  long long f = 1;
  char ch = getchar();
  while (!isdigit(ch)) {
    if (ch == '-') f = -f;
    ch = getchar();
  }
  while (isdigit(ch)) {
    x = x * 10 + ch - 48;
    ch = getchar();
  }
  x = x * f;
}
}  // namespace IO
using namespace IO;
int N;
long double L;
const int maxn = 5000;
long double T[maxn];
const long double pi = acos(-1);
int main() {
  cin >> N >> L;
  for (int i = 1; i <= N; i++) cin >> T[i];
  long double rx = 0.0, ry = 0.0;
  for (int i = 1; i <= N; i++)
    for (int j = i + 1; j <= N; j++) {
      rx += (N - 2 * j + 2 * i) *
            cos((long double)2 * pi * (T[j] + T[i]) / (long double)(2.0 * L));
      ry += (N - 2 * j + 2 * i) *
            sin((long double)2 * pi * (T[j] + T[i]) / (long double)(2.0 * L));
    }
  cout << fixed << setprecision(13)
       << (long double)(6 * rx) / (long double)((N) * (N - 1) * (N - 2)) << " "
       << (long double)(6 * ry) / (long double)((N) * (N - 1) * (N - 2));
}
