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
import java.util.*;
import java.io.*;
     
public class cf 
{    
    public static void main(String[] args) throws IOException { 
        FastReader in = new FastReader();
        
        int n = in.nextInt();
        int time = in.nextInt();
        int prev = time;
        for(int i=1;i<n;i++) {
            int h = in.nextInt();
            if(h<=prev) {
                time += prev-h +1;
                prev = h;
            } else {
                time++;
                time += h - prev;
                prev = h;
            }
        }
        time +=n;
        System.out.println(time);
    }

    static int gcd(int a, int b){ return (b==0) ? a : gcd(b, a%b); }
    static class FastReader { 
        BufferedReader br; StringTokenizer st; 
        public FastReader() { br = new BufferedReader(new InputStreamReader(System.in)); } 
      
        String next() { while (st == null || !st.hasMoreElements()) { 
            try{ st = new StringTokenizer(br.readLine()); } catch (IOException  e) { e.printStackTrace(); } }
            return st.nextToken(); } 
        int nextInt() { return Integer.parseInt(next()); } 
        long nextLong() { return Long.parseLong(next()); } 
        double nextDouble() { return Double.parseDouble(next()); } 
        char nextChar() { return next().charAt(0); }
        String nextLine() { String str = ""; try { str = br.readLine(); } catch (IOException e) { e.printStackTrace(); } 
        return str; }
     
        long[] nextIntArray(int n) {
            long[] arr = new long[n];
            String[] str = nextLine().split(" ");
            for(int i=0;i<n;i++) 
                arr[i] = Long.parseLong(str[i]);
            return arr;    
        } 
    } 
}