#include <bits/stdc++.h>
using namespace std;

enum State{Carrot, End};

typedef struct Event{
    int x;
    State state;
    
    bool operator<( const Event& right ) const {
        return x>right.x;
    }
}Event;

int N, K, T, U, V, L;
vector<int> D;

int main(){
    cout.precision(16);
    cout.setf(ios::fixed);
    
    cin >> N >> K >> T >> U >> V >> L;
    D.resize(N);
    for(auto &v: D) cin >> v;
    
    priority_queue<Event> que;
    for(auto v: D)
        que.push(Event({v, Carrot}));
    
    vector<bool> zone(L);
    int count = 0;
    while(!que.empty()){
        auto event = que.top(); que.pop();
        if(event.state == Carrot){
            if(zone[event.x]){
                if(count < K){
                    count++;
                }else{
                    que.push({event.x + T*V, End});
                    for(int x=min(L, event.x+T*V)-1; event.x<=x && !zone[x]; x--)
                        zone[x] = true;
                }
            }else{
                que.push({event.x + T*V, End});
                for(int x=min(L, event.x+T*V)-1; event.x<=x && !zone[x]; x--)
                    zone[x] = true;
            }
        }else{
            if(count && event.x<L && !zone[event.x]){
                count--;
                que.push({event.x + T*V, End});
                for(int x=min(L, event.x+T*V)-1; event.x<=x && !zone[x]; x--)
                    zone[x] = true;
            }
        }
    }
    
    double span = 0;
    for(int i=0; i<L; i++)
        span += zone[i];
    
    cout << (L-span)/U + span/V << endl;
    
    return 0;
}