#include <iostream>
#include <vector>
#include <algorithm>
#include <iomanip>

using namespace std;

const double EPS = 1e-9;
#define rep(i,n) for(int i = 0;i < n;i++)
#define EQ(a,b)	(abs(a - b) <= EPS)

int main() {

	int n, k;
	double t, u, v, l;
	cin >> n >> k >> t >> u >> v >> l;
	vector<double> d(n);

	rep(i, n) {
		cin >> d[i];
	}
	d.push_back(l);

	double time = 0.0;
	int cnt = 0, i = 0;
	double now = 0.0;
	double rest = 0.0;

	while (i < d.size()) {
		while (!EQ(now, d[i])) {
			double move = min(rest * v, d[i] - now);
			time += move / v;
			now += move;
			rest -= move / v;
			if (EQ(rest, 0)) {
				if (cnt == 0)break;
				cnt--;
				rest = t;
			}
		}
		if (!EQ(now, d[i])) {
			time += (d[i] - now) / u;
			now = d[i];
		}
		i++;
		cnt++;
		if (cnt == k + 1) {
			cnt--;
			rest = t;
		}
	}
	cout << fixed << setprecision(30) << time << endl;

	return 0;
}