#include <iostream>
#include <queue>
#define int long long
#define mp make_pair
using namespace std;

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

signed main(){
	int n,m,k,a,b,c,t,s[3000],sum = 0;
	cin >> n >> m >> k >> a >> b >> c >> t;
	priority_queue<P> que;
	for(int i = 0;i < m;i++){
		cin >> s[i];
		s[i]--;
	}
	for(int i = 0;i < m - 1;i++){
		int nowt = s[i] * b;
		if(nowt > t) continue;
		if(i) sum++;
		if(nowt + (s[i + 1] - s[i] - 1) * a <= t){
			sum += s[i + 1] - s[i] - 1;
			continue;
		}
		int local = s[i] + (t - nowt) / a;
		sum += local - s[i];
		int semit = nowt + (local + 1 - s[i]) * c;
		if(semit > t) continue;
		int semilocal = min(s[i + 1] - 1,local + (t - semit) / a + 1);
		que.push(mp(semilocal - local,mp(i,local + 1)));
	}
	if(s[m - 1] * b <= t) sum++;
	for(int i = 0;i < k - m;i++){
		if(que.empty()) continue;
		P p = que.top();que.pop();
		int d = p.first,num = p.second.first,eki = p.second.second;
		int nowt = (eki - s[num]) * c + s[num] * b;
		//cout << d << " " << num << " " << eki << " " << nowt << endl;
		if(nowt + (s[num + 1] - eki - 1) * a <= t){
			sum += s[num + 1] - eki;
			continue;
		}
		sum += d;
		int local = eki + (t - nowt) / a;
		int semit = nowt + (local + 1 - eki) * c;
		if(semit > t) continue;
		int semilocal = min(s[num + 1] - 1,local + (t - semit) / a + 1);
		que.push(mp(semilocal - local,mp(num,local + 1)));
	}
	cout << sum << endl;
	return 0;
}