#define _USE_MATH_DEFINES

#include <cstdio>
#include <cstdlib>
#include <iostream>
#include <cmath>
#include <cstring>
#include <algorithm>
#include <vector>
#include <queue>
#include <map>

using namespace std;

typedef pair<long long int, long long int> P;

long long int INF = 1e18;
long long int MOD = 1e9 + 7;

int main(){
    long long int N, M, K, A, B, C;
    cin >> N >> M >> K;
    cin >> A >> B >> C;
    long long int T;
    cin >> T;
    vector<long long int> v;
    priority_queue<P> que;
    for(int i = 0; i < M; i++){
        long long int S;
        cin >> S;
        v.push_back(S);
    }
    long long int lim[3100];
    for(int i = 0; i < M - 1; i++){
        long long int t = (v[i] - 1) * B;
        if(t > T){
            lim[i] = v[i] - 1;
            continue;
        }
        long long int num = (T - t) / A;
        num = min(num, v[i + 1] - v[i] - 1);
        lim[i] = v[i] + num;
    }
    if((N - 1) * B <= T){
        lim[M - 1] = v[M - 1];
    }else{
        lim[M - 1] = v[M - 1] - 1;
    }
    long long int t, num;
    for(int loop = 0; loop < K - M; loop++){
        long long int max_num = 0, pos = -1;
        for(int i = 0; i < M - 1; i++){
            t = (v[i] - 1) * B + (lim[i] - v[i] + 1) * C;
            if(T - t < 0){
                continue;
            }
            num = (T - t) / A + 1;
            num = min(num, v[i + 1] - lim[i] - 1);
            if(max_num < num){
                max_num = num;
                pos = i;
            }
        }
        if(pos == -1){
            break;
        }
        t = (v[pos] - 1) * B + (lim[pos] - v[pos] + 1) * C;
        num = (T - t) / A + 1;
        num = min(num, v[pos + 1] - lim[pos] - 1);
        lim[pos] += num;
        
    }
    long long int ans = 0;
    for(int i = 0; i < M; i++){
        ans += lim[i] - v[i] + 1;
    }
    cout << ans - 1 << endl;

    return 0;
}
