#include using namespace std; #define FOR(i,a,b) for (int i = (a); i <= (b); i++) #define FORD(i,a,b) for (int i = (a); i >= (b); i--) #define REP(i,b) for (int i = 0; i < (b); i++) typedef long long int ll; typedef long double ld; int main() { int N, F; while(scanf("%i %i", &N, &F)) { stack> s; REP(i, N) { int cap; scanf("%i", &cap); ld tofill = cap, curtime = 0; int speed = 1; //printf("C: %i ", cap); while(1) { ld timefilled = curtime + (tofill/(speed*F)); if(s.empty() || s.top().first >= timefilled) { if(i == N - 1) { printf("%.8Lf ", timefilled); if(s.empty()) { printf("%.8Lf", timefilled); break; } while(s.size() > 1) s.pop(); printf("%.8Lf", s.top().first); break; } s.emplace(timefilled, speed); //printf("tf: %Lf sp: %i\n", timefilled, speed); break; } ld nexttime = s.top().first; tofill -= (nexttime - curtime) * (speed * F); //printf("tofill: %Lf\n", tofill); speed += s.top().second; s.pop(); curtime = nexttime; } } } return 0; }