#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; using namespace atcoder; //* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ *// void input() { } void solve() { int N, M; cin >> N >> M; vector B(M); for(int i = 0; i < M; i++) { int b; cin >> b; B[M-i-1] = N-b; } long double ok = 0, ng = N; long double Es = 0; vector E(M); int roop = 100; while(roop--) { long double mn = (ok + ng) / 2; E.resize(M, 0); E[0] = min(B[0], mn + 1); Es = E[0]; for(int i = 1; i < M; i++) { E[i] = min(B[i] - B[i-1] + E[i-1], mn + 1); Es += E[i]; } Es /= (long double)M; Es > mn ? ok = mn : ng = mn; } long double ans = N - 1 - B[M-1] + E[M-1]; cout << fixed << setprecision(6); cout << ans << endl; } //* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ *// int main() { std::ifstream in("input.txt"); std::cin.rdbuf(in.rdbuf()); std::cin.tie(0); ios::sync_with_stdio(false); input(); solve(); return 0; }