#include <bits/stdc++.h>
using namespace std;
template <typename T, typename TT>
ostream &operator<<(ostream &s, pair<T, TT> t) {
  return s << "(" << t.first << "," << t.second << ")";
}
template <typename T>
ostream &operator<<(ostream &s, vector<T> t) {
  s << "{";
  for (int i = 0; i < t.size(); i++)
    s << t[i] << (i == t.size() - 1 ? "" : ",");
  return s << "}" << endl;
}
long long ile[3];
long long czas[3];
set<pair<long long, long long> > st;
multiset<long long> s[3];
long long osoba[200000];
long long t[200000];
int main() {
  ios_base::sync_with_stdio(0);
  for (int i = 0; i < 200000; i++) osoba[i] = 0;
  for (int i = 0; i < 3; i++) cin >> ile[i];
  for (int i = 0; i < 3; i++) cin >> czas[i];
  int n;
  cin >> n;
  for (int i = 0; i < n; i++) {
    int a;
    cin >> t[i];
    osoba[i] = 0;
    st.insert(make_pair(t[i], i));
  }
  for (int i = 0; i < 3; i++) {
    for (int j = 0; j < min((long long)n, ile[i]); j++) s[i].insert(0);
  }
  pair<long long, long long> p;
  long long best = 0;
  while (!st.empty()) {
    p = *(st.begin());
    st.erase(st.begin());
    int ktora = p.second;
    int lol = osoba[ktora];
    if (osoba[ktora] == 3) {
      best = max(best, p.first) - t[ktora];
      ;
      continue;
    } else {
      long long go = *(s[osoba[ktora]].begin());
      s[osoba[ktora]].erase(s[osoba[ktora]].begin());
      s[lol].insert(max(go, p.first) + czas[lol]);
      osoba[ktora]++;
      st.insert(make_pair(max(go, p.first) + czas[lol], ktora));
    }
  }
  cout << best;
  return 0;
}
