#P1013. 斐波那契数列

斐波那契数列

斐波那契数列

题目描述

相信你在高中一定学过斐波那契数列,但是,作为一个大学生,YAO却忘记了这一个知识点,于是他去找SH请教,SH说斐波那契数列其实就是用现在已经有的两个数的和产生一个新的数,这就是斐波那契数列辣。在学到斐波那契数列的知识点后,YAO所认为的斐波那契数列应该满足,数列的第 ii 项数(i>2i>2),即 aia_i,应该是从a1a_1 ~ ai1a_{i-1} 中任意挑选两个数构造出来的,也就是对于第三个数之后的数,满足

$$a_i = a_x + a_y \quad (1 \leq x, y < i \text{ 且 } x \neq y)$$

现在,YAO会给你一个数列,你需要写一个程序判断这个数列是不是她定义的斐波那契数列。同时,作为新生,YAO知道你的编码能力很菜,因此为了降低这个给题目的难度,她给你的数列中,每个元素都是正整数,因此你不用考虑负数的问题。

输入格式

输入共包含2行,第一行包含一个整数 n(n5×103)n (n \leq 5 \times 10^3),表示数列长度,第二行包含 nn 个整数,每个整数 aia_i 均满足 (ai109)(a_i \leq 10^{9})

输出格式

Yes或者No,表示这个数列是不是YAO认为的斐波那契数列。

样例 #1

样例输入 #1

7
1 3 4 5 7 8 15

样例输出 #1

Yes

提示

样例解释 #1

4=1+34 = 1 + 3

5=1+45 = 1 + 4

7=3+47 = 3 + 4

8=1+78 = 1 + 7

15=7+815 = 7 + 8

因此每个数都能够被之前的数中2个数的和构造出来,因此该数列是一个YAO认为的斐波那契数列

样例解释 #2

前面的数同理,但是对于数列的最后一项9,并不能从前面找到任意两个数的和等于它,因此他无法被构造,进而这不是一个YAO认为的斐波那契数列。