One day, little Vasya found himself in a maze consisting of (*n* + 1) rooms, numbered from 1 to (*n* + 1). Initially, Vasya is at the first room and to get out of the maze, he needs to get to the (*n* + 1)-th one.

The maze is organized as follows. Each room of the maze has two one-way portals. Let's consider room number *i* (1 ≤ *i* ≤ *n*), someone can use the first portal to move from it to room number (*i* + 1), also someone can use the second portal to move from it to room number *p*<sub class="lower-index">*i*</sub>, where 1 ≤ *p*<sub class="lower-index">*i*</sub> ≤ *i*.

In order not to get lost, Vasya decided to act as follows. 
 -  Each time Vasya enters some room, he paints a cross on its ceiling. Initially, Vasya paints a cross at the ceiling of room 1. -  Let's assume that Vasya is in room *i* and has already painted a cross on its ceiling. Then, if the ceiling now contains an odd number of crosses, Vasya uses the second portal (it leads to room *p*<sub class="lower-index">*i*</sub>), otherwise Vasya uses the first portal. 
Help Vasya determine the number of times he needs to use portals to get to room (*n* + 1) in the end.
The first line contains integer *n* (1 ≤ *n* ≤ 10<sup class="upper-index">3</sup>) — the number of rooms. The second line contains *n* integers *p*<sub class="lower-index">*i*</sub> (1 ≤ *p*<sub class="lower-index">*i*</sub> ≤ *i*). Each *p*<sub class="lower-index">*i*</sub> denotes the number of the room, that someone can reach, if he will use the second portal in the *i*-th room.
mod = 1e9+7

dp=[[0]*1007 for x in range(1007)]
rooms = [0,0]

def dfs(x,y):
    if x == y:
        dp[x][y] = 1
        return
    if dp[x][y]: 
        return
    dfs(x, y - 1)
    dfs(rooms[y - 1], y - 1 )
    dp[x][y] = dp[x][y - 1] + dp[rooms[y - 1]][y - 1] + 1
    dp[x][y] %= mod

def main():
    global rooms
    n = input()
    rooms[1:1] = map(int, raw_input().split(" ")) 
    dfs(1,n+1)
    print "%d" % (((dp[1][n+1]-1)%mod+mod)%mod)

if __name__ == '__main__':
    main()