#include <bits/stdc++.h>
using namespace std;
queue<pair<int, long long> > Q[3];
int Pr[3];
int Cap[3];
int E[100005];
int N;
long long ans = 0;
void push(int k, int man, long long t) {
  if (k == 3) {
    ans = max(ans, t - E[man]);
    return;
  }
  while ((int)(Q[k]).size() && Q[k].front().second + Pr[k] <= t) {
    pair<int, long long> p = Q[k].front();
    Q[k].pop();
    push(k + 1, p.first, p.second + Pr[k]);
  }
  if ((int)(Q[k]).size() == Cap[k]) {
    pair<int, long long> p = Q[k].front();
    Q[k].pop();
    push(k + 1, p.first, p.second + Pr[k]);
    Q[k].push(make_pair(man, p.second + Pr[k]));
  } else {
    Q[k].push(make_pair(man, t));
  }
}
void Solve() {
  for (int i = 0; i < 3; ++i) {
    scanf("%d", Cap + i);
  }
  for (int i = 0; i < 3; ++i) {
    scanf("%d", Pr + i);
  }
  scanf("%d", &N);
  for (int i = 0; i < N; ++i) {
    scanf("%d", E + i);
    push(0, i, E[i]);
  }
  for (int k = 0; k < 3; ++k) {
    while (!Q[k].empty()) {
      pair<int, long long> p = Q[k].front();
      Q[k].pop();
      push(k + 1, p.first, p.second + Pr[k]);
    }
  }
  printf("%I64d\n", ans);
}
int main() {
  Solve();
  return 0;
}
