Problem:
I: Starting Line

ICPC で良い成績を収めるには修行が欠かせない．うさぎは ICPC で勝ちたいので，今日も修行をすることにした．

今日の修行は，一直線上の道を走って，体力と判断力を養おうというものである．うさぎは今，スタートラインに立って長い長い道を見渡している．

道の途中にはいくつかニンジンが置かれており，うさぎはニンジンを食べると加速することができる．加速していないときのうさぎの走る速さは毎秒 U メートルであるが，ニンジンを食べることで，最後のニンジンを食べてから T 秒後までは速さが毎秒 V メートルとなる．また，うさぎはニンジンを K 個まで食べずに持っておくことができる．ニンジンを持っていても走る速さは変わらない．

ニンジンを持ったり食べたりするのに時間はかからないとして，ゴールまでの最短所要時間を求めたい．

Input

N K T U V L
D1
...
DN

N はニンジンの個数，L はスタートからゴールまでの距離 (メートル)，Di (1 ≤ i ≤ N) は i 番目のニンジンが置かれている場所のスタートからの距離 (メートル) である．

1 ≤ N ≤ 200，1 ≤ K ≤ N，1 ≤ T ≤ 10,000，1 ≤ U < V ≤ 10,000，2 ≤ L ≤ 10,000，0 < D1 < D2 < ... < DN < L を満たす．入力の値はすべて整数である．

Output

最短所要時間 (秒) を 1 行に出力せよ．10-6 以下の絶対誤差が許容される．

Sample Input 1

1 1 1 2 3 100
50

Sample Output 1

49.500000000

Sample Input 2

3 1 1 2 3 100
49
50
51

Sample Output 2

48.666666667

Solution in Ruby (judge verdict: Accepted)

N, K, T, U, V, L = gets.split.map(&:to_f)

time = 0.0
distance = 0.0
stock = 0
restTime = 0.0
N.to_i.times do
  d = gets.to_f
  t = (d - distance) / V
  while true do
    break if restTime >= t || stock == 0
    restTime += T
    stock -= 1
  end
  if restTime >= t
    restTime -= t
    time += t
  else
    time += restTime
    time += (d - distance - V * restTime) / U
    restTime = 0.0
  end
  distance = d

  if stock < K
    stock += 1
  else
    restTime = T
  end
end

t = (L - distance) / V
while true do
  break if restTime > t || stock == 0
  restTime += T
  stock -= 1
end
if restTime >= t
  restTime -= t
  time += t
else
  time += restTime
  time += (L - distance - V * restTime) / U
  restTime = 0.0
end
distance = L

p time