#include //mt19937_64 rng(chrono::steady_clock::now().time_since_epoch().count()); //uniform_int_distribution(1, 2000000)(rng); using namespace std; using ll = long long; template bool smax(T & x, T y) { if (x < y) { x = y; return true; } return false; } template bool smin(T & x, T y) { if (x > y) { x = y; return true; } return false; } const int MOD = 998244353; int sum(int x, int y) { if (x + y >= MOD) { return x + y - MOD; } return x + y; } int diff(int x, int y) { // cout << "DIFF " << x << " " << y << endl; if (x >= y) { return x - y; } return x + MOD - y; } int mult(int x, int y) { // cout << "MULT " << x << " " << y << endl; return (int) ((x * 1ll * y) % MOD); } int mypow(int x, ll p) { int ans = 1; while (p > 0) { if ((p & 1ll) == 1ll) { ans = mult(ans, x); } x = mult(x, x); p /= 2; } // cout << "POW " << ans << endl; return ans; } int inv(int x) { return mypow(x, MOD - 2); } int MAX = 5010; vector> p(MAX, vector(MAX)); void precalc() { p[1][0] = 1; p[2][0] = 0.5; for (int n = 3; n < MAX; ++n) { p[n][0] = 1. / n; for (int i = 1; i < n; ++i) { p[n][i] = (n - 1. - i) / n * p[n - 2][i - 1]; if (i > 1) { p[n][i] += (i - 1.) / n * p[n - 2][i - 2]; } } } } double PI = atan2l(0, -1); void solve() { int n, p; cin >> n >> p; vector a(2 * n); for (int i = 0; i < n; ++i) { cin >> a[i]; } for (int i = 0; i < n; ++i) { a[i + n] = a[i] + 360; } for (int i = 0; i < 2 * n; ++i) { a[i] *= PI / 180; } double ans = 0; for (int start = 0; start < n; ++start) { vector> dp(2 * n, vector(p + 1, -2e5)); dp[start][0] = 0; for (int i = start; i < start + n; ++i) { for (int k = 0; k < p; ++k) { for (int next = i + 1; next <= start + n; ++next) { smax(dp[next][k + 1], dp[i][k] + sin(a[next] - a[i]) / 2); } } } for (int k = 0; k <= p; ++k) { smax(ans, dp[start + n][k]); } } cout << ans * 1e6 << "\n"; } int main() { ios::sync_with_stdio(false); cin.tie(nullptr); precalc(); int t = 1; // for (int n = 1; n < 10; ++n) { // for (int i = 0; i < n; ++i) { // cout << p[n][i] << " " << "\n"; // } // cout << "\n"; // } // cin >> t; cout << fixed << setprecision(12); while (t--) { solve(); } return 0; }