import std.stdio;
import std.algorithm;
import std.string;
import std.range;
import std.array;
import std.conv;
import std.complex;
import std.math;
import std.ascii;
import std.bigint;
import std.container;
import std.typecons;

auto readInts() {
	return array(map!(to!int)(readln().strip().split()));
}
auto readInt() {
	return readInts()[0];
}
auto readLongs() {
	return array(map!(to!long)(readln().strip().split()));
}
auto readLong() {
	return readLongs()[0];
}

const real eps = 1e-10;

void main(){
	while(true) {
		auto nw = readInts();
		auto n = nw[0];
		auto w = nw[1];
		if((n|w) == 0) return;

		auto b = new int[](100);
		int c;
		int d;
		
		for(int i; i < n; ++i) {
			auto v = readInt();
			++b[v/w];
			c = max(c, v/w);
			d = max(d, b[v/w]);
		}
		double ink = 0;
		for(int i; i <= c; ++i) {
			ink += 1.0 * b[i] * (c-i) / c;
		}
		ink /= d;
		ink += 0.01;
		writeln(ink);
	}
}