#include <bits/stdc++.h>
using namespace std;
const int MaxN = 4;
const int inf = 50000000;
int ans = 0, cnt = 0;
int pos[MaxN], lift[MaxN], lifted[MaxN], move_range[MaxN], throw_range[MaxN];
void dfs(int A, int B, int C, int P, int Q, int R, int X, int Y, int Z) {
  ++cnt;
  for (int k = 1; k <= 3; ++k)
    if (pos[k] < 1005) ans = max(ans, pos[k]);
  if (cnt > inf) return;
  if (A && !lift[1] && !lifted[1]) {
    int tmp = pos[1];
    for (int k = tmp + move_range[1]; k >= tmp - move_range[1] && k; --k) {
      if (pos[2] == k || pos[3] == k) continue;
      pos[1] = k;
      dfs(0, B, C, P, Q, R, X, Y, Z);
    }
    pos[1] = tmp;
  }
  if (B && !lift[2] && !lifted[2]) {
    int tmp = pos[2];
    for (int k = tmp + move_range[2]; k >= tmp - move_range[2] && k; --k) {
      if (pos[3] == k || pos[1] == k) continue;
      pos[2] = k;
      dfs(A, 0, C, P, Q, R, X, Y, Z);
    }
    pos[2] = tmp;
  }
  if (C && !lift[3] && !lifted[3]) {
    int tmp = pos[3];
    for (int k = tmp + move_range[3]; k >= tmp - move_range[3] && k; --k) {
      if (pos[1] == k || pos[2] == k) continue;
      pos[3] = k;
      dfs(A, B, 0, P, Q, R, X, Y, Z);
    }
    pos[3] = tmp;
  }
  if (P && !lifted[1]) {
    if (abs(pos[1] - pos[2]) == 1 && !lifted[2]) {
      int tmp = pos[2];
      pos[2] = 1005;
      lift[1] = 2;
      lifted[2] = 1;
      dfs(A, B, C, 0, Q, R, X, Y, Z);
      lift[1] = lifted[2] = 0;
      pos[2] = tmp;
    }
    if (abs(pos[1] - pos[3]) == 1 && !lifted[3]) {
      int tmp = pos[3];
      pos[3] = 1005;
      lift[1] = 3;
      lifted[3] = 1;
      dfs(A, B, C, 0, Q, R, X, Y, Z);
      lift[1] = lifted[3] = 0;
      pos[3] = tmp;
    }
  }
  if (Q && !lifted[2]) {
    if (abs(pos[2] - pos[3]) == 1 && !lifted[3]) {
      int tmp = pos[3];
      pos[3] = 1005;
      lift[2] = 3;
      lifted[3] = 2;
      dfs(A, B, C, P, 0, R, X, Y, Z);
      lift[2] = lifted[3] = 0;
      pos[3] = tmp;
    }
    if (abs(pos[2] - pos[1]) == 1 && !lifted[1]) {
      int tmp = pos[1];
      pos[1] = 1005;
      lift[2] = 1;
      lifted[1] = 2;
      dfs(A, B, C, P, 0, R, X, Y, Z);
      lift[2] = lifted[1] = 0;
      pos[1] = tmp;
    }
  }
  if (R && !lifted[3]) {
    if (abs(pos[3] - pos[1]) == 1 && !lifted[1]) {
      int tmp = pos[1];
      pos[1] = 1005;
      lift[3] = 1;
      lifted[1] = 3;
      dfs(A, B, C, P, Q, 0, X, Y, Z);
      lift[3] = lifted[1] = 0;
      pos[1] = tmp;
    }
    if (abs(pos[3] - pos[2]) == 1 && !lifted[2]) {
      int tmp = pos[2];
      pos[2] = 1005;
      lift[3] = 2;
      lifted[2] = 3;
      dfs(A, B, C, P, Q, 0, X, Y, Z);
      lift[3] = lifted[2] = 0;
      pos[2] = tmp;
    }
  }
  if (X && lift[1] && !lifted[1]) {
    int tmp = lift[1];
    for (int k = pos[1] + throw_range[1]; k >= pos[1] - throw_range[1] && k;
         --k) {
      if (k == pos[1] || k == pos[2] || k == pos[3]) continue;
      lift[1] = lifted[tmp] = 0;
      pos[tmp] = k;
      dfs(A, B, C, P, Q, R, 0, Y, Z);
      lift[1] = tmp;
      lifted[tmp] = 1;
      pos[tmp] = 1005;
    }
  }
  if (Y && lift[2] && !lifted[2]) {
    int tmp = lift[2];
    for (int k = pos[2] + throw_range[2]; k >= pos[2] - throw_range[2] && k;
         --k) {
      if (k == pos[1] || k == pos[2] || k == pos[3]) continue;
      lift[2] = lifted[tmp] = 0;
      pos[tmp] = k;
      dfs(A, B, C, P, Q, R, X, 0, Z);
      lift[2] = tmp;
      lifted[tmp] = 2;
      pos[tmp] = 1005;
    }
  }
  if (Z && lift[3] && !lifted[3]) {
    int tmp = lift[3];
    for (int k = pos[3] + throw_range[3]; k >= pos[3] - throw_range[3] && k;
         --k) {
      if (k == pos[1] || k == pos[2] || k == pos[3]) continue;
      lift[3] = lifted[tmp] = 0;
      pos[tmp] = k;
      dfs(A, B, C, P, Q, R, X, Y, 0);
      lift[3] = tmp;
      lifted[tmp] = 3;
      pos[tmp] = 1005;
    }
  }
}
int main() {
  memset(lift, 0, sizeof(lift));
  memset(lifted, 0, sizeof(lifted));
  for (int k = 1; k <= 3; ++k)
    scanf("%d %d %d", pos + k, move_range + k, throw_range + k);
  for (int i = 1; i <= 2; ++i)
    for (int j = i + 1; j <= 3; ++j)
      if (pos[i] > pos[j]) {
        swap(pos[i], pos[j]);
        swap(move_range[i], move_range[j]);
        swap(throw_range[i], throw_range[j]);
      }
  dfs(1, 1, 1, 1, 1, 1, 1, 1, 1);
  printf("%d\n", ans);
  return 0;
}
