import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.Scanner; import java.util.Stack; /** * * @author muran4 */ public class Cascade { /** * @param args the command line arguments */ public static void main(String[] args) throws IOException { // TODO code application logic here BufferedReader input = new BufferedReader(new InputStreamReader(System.in)); String line; String[] arr; long[] serie; int num; while((line = input.readLine())!=null){ arr = line.split(" "); num = Integer.parseInt(arr[0]); int speed = Integer.parseInt(arr[1]); line = input.readLine(); //arr = line.split(" "); Scanner in = new Scanner(line); serie = new long[num]; long min = Long.MAX_VALUE; for (int i = 0; i < num; i++) { serie[i] = in.nextLong(); if(min> serie[i])min= serie[i]; } double offset = (min*1.0)/speed; for (int i = 0; i < num; i++) { serie[i] = serie[i]-min; } Stack timeStack = new Stack(); Stack speedStack = new Stack(); // double time = serie[0]*1.0/speed; // // timeStack.push(time); // speedStack.push(speed*1.0); double temp = 0; for (int i = 0; i < num; i++) { // f fill(serie[i], speed, timeStack, speedStack, 0.0); } // System.out.print(offset+timeStack.peek()); double first = offset+timeStack.peek(); while(!timeStack.isEmpty()){ temp = timeStack.pop(); } // System.out.println(" "+(temp+offset)); double second = temp+offset; System.out.format("%.8f %.8f%n",first,second); } } private static void fill(double amount, double speed, Stack timeStack, Stack speedStack, double time) { // System.out.println(amount+" "+speed+" "+time); double ttime = amount / speed +time; if(timeStack.isEmpty()){ timeStack.push(ttime); speedStack.push(speed); return; } if(ttime