#include <bits/stdc++.h>
int t[3];
int k[3];
std::queue<long long> qq[6];
int c[100000];
int cnt[3];
int main() {
  long long tm = 0;
  long long max = 0;
  int n;
  std::cin >> k[0] >> k[1] >> k[2];
  std::cin >> t[0] >> t[1] >> t[2];
  std::cin >> n;
  for (int i = 0; i < n; ++i) {
    std::cin >> c[i];
    qq[0].push(c[i]);
  }
  int curr = 0;
  while (true) {
    int num = -1;
    for (int i = 0; i < 6; i += 1)
      if (!qq[i].empty() && (num < 0 || qq[num].front() > qq[i].front())) {
        if (i % 2 != 0 || cnt[i / 2] < k[i / 2]) num = i;
      }
    if (num < 0) break;
    if (tm < qq[num].front()) tm = qq[num].front();
    qq[num].pop();
    if (num < 5) {
      if (num % 2) {
        --cnt[num / 2];
        qq[num + 1].push(tm);
      } else {
        qq[num + 1].push(tm + t[num / 2]);
        ++cnt[num / 2];
      }
    } else {
      --cnt[num / 2];
      long long tt = tm - c[curr];
      if (tt > max) max = tt;
      ++curr;
    }
  }
  std::cout << max;
  return 0;
}
