#include <bits/stdc++.h>
using namespace std;
template <class T>
inline void checkmin(T &a, T b) {
  if (b < a) a = b;
}
template <class T>
inline void checkmax(T &a, T b) {
  if (b > a) a = b;
}
long long ci[100011];
long long ti[100011];
multiset<long long> si[3];
int k[3];
int t[3];
int N;
int main() {
  for (int i = (0); i < (int)(3); i++) scanf("%d", k + i);
  for (int i = (0); i < (int)(3); i++) scanf("%d", t + i);
  scanf("%d", &N);
  for (int i = (0); i < (int)(N); i++) {
    int tmp;
    scanf("%d", &tmp);
    ci[i] = tmp;
  }
  sort(ci, ci + N);
  for (int i = (0); i < (int)(3); i++)
    for (int j = (0); j < (int)(min(k[i], N)); j++) si[i].insert(0);
  for (int i = (0); i < (int)(N); i++) ti[i] = ci[i];
  for (int step = (0); step < (int)(3); step++) {
    for (int i = (0); i < (int)(N); i++) {
      long long v = *(si[step].begin());
      si[step].erase(si[step].begin());
      ti[i] = max(ti[i], v);
      ti[i] += t[step];
      si[step].insert(ti[i]);
    }
  }
  long long ret = 0;
  for (int i = (0); i < (int)(N); i++) ret = max(ret, ti[i] - ci[i]);
  cout << ret << endl;
  return 0;
}
