Squirrel Liss loves nuts. There are n trees (numbered 1 to n from west to east) along a street and there is a delicious nut on the top of each tree. The height of the tree i is hi. Liss wants to eat all nuts.

Now Liss is on the root of the tree with the number 1. In one second Liss can perform one of the following actions:

  * Walk up or down one unit on a tree. 
  * Eat a nut on the top of the current tree. 
  * Jump to the next tree. In this action the height of Liss doesn't change. More formally, when Liss is at height h of the tree i (1 ≤ i ≤ n - 1), she jumps to height h of the tree i + 1. This action can't be performed if h > hi + 1. 



Compute the minimal time (in seconds) required to eat all nuts.

Input

The first line contains an integer n (1 ≤ n ≤ 105) — the number of trees.

Next n lines contains the height of trees: i-th line contains an integer hi (1 ≤ hi ≤ 104) — the height of the tree with the number i.

Output

Print a single integer — the minimal time required to eat all nuts in seconds.

Examples

Input

2
1
2


Output

5


Input

5
2
1
2
1
1


Output

14
#include <bits/stdc++.h>
using namespace std;
mt19937 rng(chrono::steady_clock::now().time_since_epoch().count());
void c_p_c() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
}
long long po(long long n, long long exp) {
  if (exp == 0) return 1 % 1000000007;
  long long n2 = po(n, (exp >> 1)) % 1000000007;
  return (exp & 1) == 0 ? (n2 * n2) % 1000000007 : (n * n2 * n2) % 1000000007;
}
vector<long long> primeNum;
void Sieve() {
  long long N = 1000000;
  bool prime[1000000] = {false};
  for (long long i = 4; i < N; i += 2) prime[i] = true;
  primeNum.push_back(2);
  for (long long i = 3; i < N; i++) {
    if (!prime[i]) {
      primeNum.push_back(i);
      for (long long j = i * i; j < N; j += 2 * i) {
        prime[j] = true;
      }
    }
  }
  return;
}
void solve() {
  long long n;
  cin >> n;
  long long a[n];
  for (long long i = 0; i < n; i++) {
    cin >> a[i];
  }
  if (n == 1) {
    cout << a[0] + 1 << endl;
    return;
  }
  long long count = 0;
  if (a[0] > a[1])
    count = a[0] + 1 + a[0] - a[1];
  else
    count = a[0] + 1;
  for (long long i = 1; i < n - 1; i++) {
    if (a[i] <= a[i - 1]) {
      if (a[i] <= a[i + 1]) {
        count += 1;
      } else {
        count += a[i] - a[i + 1] + 1;
      }
    } else {
      if (a[i] > a[i + 1])
        count += a[i] - a[i - 1] + 1 + a[i] - a[i + 1];
      else
        count += a[i] - a[i - 1] + 1;
    }
  }
  if (a[n - 1] > a[n - 2]) {
    count += a[n - 1] - a[n - 2] + 1;
  } else {
    count += a[n - 1] - a[n - 1] + 1;
  }
  count += n - 1;
  cout << count << endl;
}
int32_t main() {
  c_p_c();
  solve();
  return 0;
}
