#include <bits/stdc++.h>
const int INF = 0x3f3f3f3f;
const long long INFLL = 0x3f3f3f3f3f3f3f3fll;
long long getint() {
  long long ret = 0;
  bool f = 0;
  char c;
  while ((c = getchar()) < '0' || c > '9')
    if (c == '-') f ^= 1;
  while (c >= '0' && c <= '9') {
    ret = ret * 10 + c - '0';
    c = getchar();
  }
  return f ? -ret : ret;
}
using namespace std;
const int MAXN = 50;
int b0, b1, b2, r0, r1, r2;
int dp[MAXN][4][MAXN][4][MAXN + 10][4];
int dfs(int p0, int s0, int p1, int s1, int p2, int s2) {
  int &val = dp[p0][s0][p1][s1][p2][s2];
  if (~val) return val;
  val = max(p0, max(p1, p2));
  if (!s0 && !s1 && !s2) return val;
  if (s0 & 1) {
    for (int i = -b0; i <= b0; ++i)
      if (p0 + i > 0 && p0 + i != p1 && p0 + i != p2)
        val = max(val, dfs(p0 + i, s0 ^ 1, p1, s1, p2, s2));
  }
  if (s1 & 1) {
    for (int i = -b1; i <= b1; ++i)
      if (p1 + i > 0 && p1 + i != p0 && p1 + i != p2)
        val = max(val, dfs(p0, s0, p1 + i, s1 ^ 1, p2, s2));
  }
  if (s2 & 1) {
    for (int i = -b2; i <= b2; ++i)
      if (p2 + i > 0 && p2 + i != p0 && p2 + i != p1)
        val = max(val, dfs(p0, s0, p1, s1, p2 + i, s2 ^ 1));
  }
  if (s0 & 2) {
    val = max(val, dfs(p0, s0 ^ 2, p1, s1, p2, s2));
    if (abs(p0 - p1) == 1)
      for (int i = -r0; i <= r0; ++i)
        if (p0 + i != p2 && p0 + i > 0)
          val = max(val, dfs(p0, s0 ^ 2, p0 + i, s1, p2, s2));
    if (abs(p0 - p2) == 1)
      for (int i = -r0; i <= r0; ++i)
        if (p0 + i != p1 && p0 + i > 0)
          val = max(val, dfs(p0, s0 ^ 2, p1, s1, p0 + i, s2));
  }
  if (s1 & 2) {
    val = max(val, dfs(p0, s0, p1, s1 ^ 2, p2, s2));
    if (abs(p1 - p2) == 1)
      for (int i = -r1; i <= r1; ++i)
        if (p1 + i != p0 && p1 + i > 0)
          val = max(val, dfs(p0, s0, p1, s1 ^ 2, p1 + i, s2));
    if (abs(p1 - p0) == 1)
      for (int i = -r1; i <= r1; ++i)
        if (p1 + i != p2 && p1 + i > 0)
          val = max(val, dfs(p1 + i, s0, p1, s1 ^ 2, p2, s2));
  }
  if (s2 & 2) {
    val = max(val, dfs(p0, s0, p1, s1, p2, s2 ^ 2));
    if (abs(p2 - p0) == 1)
      for (int i = -r2; i <= r2; ++i)
        if (p2 + i != p1 && p2 + i > 0)
          val = max(val, dfs(p2 + i, s0, p1, s1, p2, s2 ^ 2));
    if (abs(p2 - p1) == 1)
      for (int i = -r2; i <= r2; ++i)
        if (p2 + i != p0 && p2 + i > 0)
          val = max(val, dfs(p0, s0, p2 + i, s1, p2, s2 ^ 2));
  }
  if ((s0 & 2) && (s1 & 2) && abs(p0 - p1) == 1) {
    if (abs(p0 - p2) == 1)
      val = max(val, dfs(p1 + r1, s0 ^ 2, p1, s1 ^ 2, p1 + r1 + r0, s2));
    if (abs(p1 - p2) == 1)
      val = max(val, dfs(p0, s0 ^ 2, p0 + r0, s1 ^ 2, p0 + r0 + r1, s2));
  }
  if ((s1 & 2) && (s2 & 2) && abs(p1 - p2) == 1) {
    if (abs(p0 - p1) == 1)
      val = max(val, dfs(p2 + r2 + r1, s0, p2 + r2, s1 ^ 2, p2, s2 ^ 2));
    if (abs(p0 - p2) == 1)
      val = max(val, dfs(p1 + r1 + r2, s0, p1, s1 ^ 2, p1 + r1, s2 ^ 2));
  }
  if ((s0 & 2) && (s2 & 2) && abs(p0 - p2) == 1) {
    if (abs(p0 - p1) == 1)
      val = max(val, dfs(p2 + r2, s0 ^ 2, p2 + r2 + r0, s1, p2, s2 ^ 2));
    if (abs(p2 - p1) == 1)
      val = max(val, dfs(p0, s0 ^ 2, p0 + r0 + r2, s1, p0 + r0, s2 ^ 2));
  }
  return val;
}
int main() {
  memset(dp, -1, sizeof dp);
  int p0, p1, p2;
  p0 = getint();
  b0 = getint();
  r0 = getint();
  p1 = getint();
  b1 = getint();
  r1 = getint();
  p2 = getint();
  b2 = getint();
  r2 = getint();
  printf("%d\n", dfs(p0, 3, p1, 3, p2, 3));
}
