#此题利用动态规划思路 a=int(input()) #取出数组长度 b=[int(i) for i in input().split()] #取出数组内容 if len(b)==1: #如果数组只有1的长度,那必然已经在终点 print("true") else: #创建dp数组,0代表无法到达终点,1代表可以到达终点 dp=[0]*len(b) target=len(b)-1 #终点为数组的最后一个索引 for i in range(a-2,-1,-1): #从倒数第二个索引开始遍历,如果它和target之间的差值小于等于它本身的值,代表这个位置可以到达终点,因此我们更新终点为i,即代表只要能达到这个位置就必定能到终点 if target-i<=b[i]: target=i dp[i]=1 #最终判断dp[0]是否等于1,因为起点一定是dp[0],因此如果它等于1,必然存在一条路线到达终点 print("true" if dp[0]==1 else "false")