#include <iostream>
#include <algorithm>
#include <functional>
#include <vector>
using namespace std;
typedef long long ll;
 
ll N,M,K,L,A,B,C,T;
ll esta[3010];//急行駅の番号
 
 
vector<ll> vec;
 
inline ll updiv(ll a,ll b){
	return a%b ? a/b+1 : a/b;
}
 
int main(){
	cin>>N>>M>>K>>A>>B>>C>>T;
 
	for(int i=1;i<=M;i++) cin>>esta[i];
 
	L=K-M;
	ll res=0;
	for(int i=2;i<=M;i++){
		if(B*(esta[i]-1)>T) break;
		res++;
	}
 
	for(int i=1;i<M;i++){
		ll now_t=(esta[i]-1)*B;
		ll now_n=esta[i];
		if(now_t>T) break;
		ll cango=(T-now_t)/A;
		if(now_n+cango>=esta[i+1]-1){
			res+=(esta[i+1]-esta[i]-1);
			continue;
		}
		res+=cango;
 
		for(int j=1;j<=3010;j++){
			if(cango==0&&(T-now_t)<C) break;
			now_t+=C*(cango+1);
			now_n+=cango+1;
			if(now_t>T) break;
			cango=(T-now_t)/A;
			if(now_n+cango>=esta[i+1]-1){
				vec.push_back(esta[i+1]-now_n);
				break;
			}
			vec.push_back(cango+1);
		}
	}
	sort(vec.begin(),vec.end(),greater<ll>());
 
	L=min(L,(ll)vec.size());
	for(int i=0;i<L;i++){
		res+=vec[i];
	}
	cout<<res<<endl;
	return 0;
}
