封闭运算
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

若对于数组中任意的 i,j1 \leq i \leq j \leq n)都存在一个 k,使得 a_i \circ a_j = a_k ,则称该数组对于 \circ 运算是封闭的,其中 \circ 表示一种未知的二元运算符号。
现给定一个包含 n 个非负整数的数组 a,判断该数组对于按位或运算是否封闭。即:若对于数组中任意的 i,j1 \leq i \leq j \leq n)都存在一个 k,使得 a_i | a_j = a_k (其中 | 表示按位或),则称该数组对于按位或运算是封闭的。

输入描述:

第一行,输入一个整数 n1 \leq n \leq 100),表示数组中元素的数量。
第二行,输入 n 个整数 a_1, a_2, ..., a_n1 \leq a_i < 2^{30}),表示数组元素。

输出描述:

一行,若数组 a 对于按位或运算封闭,输出 "YES"(不含引号),否则输出 "NO"(不含引号)。
示例1

输入

复制
1
1

输出

复制
YES
示例2

输入

复制
3
2 1 3

输出

复制
YES
示例3

输入

复制
4
1 3 2 4

输出

复制
NO