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.io.*;
import java.util.*;

public class CodeForces {
    public static void main(String[] args)throws IOException {
        //MyScanner sc = new MyScanner(new FileReader("input.txt"));
        //PrintWriter out = new PrintWriter("output.txt");
        PrintWriter out = new PrintWriter(System.out);
        MyScanner sc = new MyScanner(System.in);
        int n = sc.nextInt();
        int[] Tree = new int[n];
        for (int i = 0; i < n; i++)
            Tree[i] = sc.nextInt();
        int cnt = 0;
        if (n == 1) out.print(Tree[0] + 1);
        else {
            for (int i = 0; i < n - 1; i++) {
                if (i == 0) {
                    cnt += Tree[i];
                    cnt++;
                }

                if (Tree[i + 1] <= Tree[i]) {
                    cnt += Math.abs(Tree[i] - Tree[i + 1]);
                    cnt += 2;
                } else {
                    cnt += 2;
                    cnt += Math.abs(Tree[i] - Tree[i + 1]);
                }

            }

        out.print(cnt);
    }
        out.flush();
        out.close();

    }

    static long gcd(long a, long b) { return b==0 ? a : gcd(b, a % b); }
    static long lcm(long a, long b) { return (a / gcd(a, b)) * b; }
    static class MyScanner
    {
        StringTokenizer st;
        BufferedReader br;

        public MyScanner(InputStream s){	br = new BufferedReader(new InputStreamReader(s));}

        public MyScanner(FileReader s) throws FileNotFoundException {	br = new BufferedReader(s);}

        public String next() throws IOException
        {
            while (st == null || !st.hasMoreTokens())
                st = new StringTokenizer(br.readLine());
            return st.nextToken();
        }

        public int nextInt() throws IOException {return Integer.parseInt(next());}

        public long nextLong() throws IOException {return Long.parseLong(next());}

        public String nextLine() throws IOException {return br.readLine();}

        public double nextDouble() throws IOException { return Double.parseDouble(next()); }

        public boolean ready() throws IOException {return br.ready();}
    }
}