#include <bits/stdc++.h>
using namespace std;
#pragma comment(linker, "/STACK:16777216")
const int rmax = 55;
bool f[rmax][rmax][rmax][1 << 3][5][5][5];
struct T {
  int pos[3];
  int was[3];
  int mask;
};
inline bool& F(T a) {
  return f[a.pos[0]][a.pos[1]][a.pos[2]][a.mask][a.was[0]][a.was[1]][a.was[2]];
}
queue<T> q;
int walk[3];
int pos[3];
int push[3];
int main() {
  for (int(i) = 0; (i) < (3); ++(i)) {
    cin >> pos[i] >> walk[i] >> push[i];
    pos[i] += 10;
  }
  T st;
  for (int(i) = 0; (i) < (3); ++(i)) {
    st.pos[i] = pos[i];
    st.was[i] = 3;
  }
  st.mask = 0;
  int ans = 0;
  q.push(st);
  F(st) = 1;
  int step = 0;
  while (!q.empty()) {
    step++;
    if (step == 2956) step = step;
    T cur = q.front();
    if (cur.pos[0] == 20 && cur.pos[1] == 26 && cur.pos[2] == 29) step = step;
    if (cur.pos[0] < 0) step = step;
    q.pop();
    ans = max(ans, *max_element(cur.pos, cur.pos + 3));
    for (int(who) = 0; (who) < (3); ++(who)) {
      bool can = 1;
      for (int(i) = 0; (i) < (3); ++(i))
        if (cur.was[i] == who) can = 0;
      if (!can) continue;
      if (!(cur.mask & (1 << who)) && cur.was[who] > 2)
        for (int pos = cur.pos[who] - walk[who];
             pos <= cur.pos[who] + walk[who]; pos++)
          if (pos >= 0) {
            bool ok = 1;
            for (int(other) = 0; (other) < (3); ++(other))
              if (cur.pos[other] == pos && cur.was[3 - who - other] != other)
                ok = 0;
            if (ok) {
              T nv = cur;
              nv.pos[who] = pos;
              nv.mask |= (1 << who);
              if (!F(nv)) {
                F(nv) = 1;
                q.push(nv);
              }
            }
          }
      if (cur.was[who] == 3)
        for (int(other) = 0; (other) < (3); ++(other))
          if (cur.was[3 - who - other] != other &&
              abs(cur.pos[other] - cur.pos[who]) == 1) {
            T nv = cur;
            nv.was[who] = other;
            if (!F(nv)) {
              F(nv) = 1;
              q.push(nv);
            }
          }
      if (cur.was[who] < 3 && cur.was[cur.was[who]] > 2) {
        int other = cur.was[who];
        for (int pos = cur.pos[who] - push[who];
             pos <= cur.pos[who] + push[who]; pos++)
          if (cur.pos[3 - who - other] != pos && cur.pos[who] != pos) {
            T nv = cur;
            nv.was[who] = 4;
            nv.pos[other] = pos;
            if (nv.pos[other] >= 0)
              if (!F(nv)) {
                F(nv) = 1;
                q.push(nv);
              }
          }
      }
      if (cur.was[who] < 3 && cur.was[cur.was[who]] < 3) {
        T nv = cur;
        int other = cur.was[who];
        int guy = cur.was[other];
        nv.was[who] = 4;
        for (int pos = cur.pos[who] - push[who];
             pos <= cur.pos[who] + push[who]; pos++)
          if (cur.pos[who] != pos) {
            nv.pos[other] = pos;
            nv.pos[guy] = pos;
            if (nv.pos[other] >= 0)
              if (!F(nv)) {
                F(nv) = 1;
                q.push(nv);
              }
          }
      }
    }
  }
  cout << ans - 10 << endl;
}
