AND = OR#10887

AND = OR

3 seconds
128 megabytes
Easy

An array of integers [b_1, b_2, \dots, b_m] is called good if it can be divided into two non-empty groups such that the bitwise of the elements in the first group is equal to the bitwise of the elements in the second group.

For example, the array [1, 7, 3, 11] is good, because it can be split into the groups and , where 1~OR~3 = 3 and 7~AND~11 = 3.

You are given an array [a_1, a_2, \dots, a_n]. Answer queries of the form: is the subarray [a_l, a_{l+1}, \dots, a_r] good?

Input

The first line contains two integers and q~(1 \le n \le 10^5, 1 \le q \le 10^5) — the length of the array and the number of queries.

The second line contains integers a_1, a_2, \dots, a_n~(0 \le a_i \le 2^{30}-1) — the elements of the array.

Each of the next lines contains two integers l_i and r_i~(1 \le l_i \le r_i \le n) describing the -th query.

Output

For each query, print "YES" if the corresponding subarray is good, and "NO" otherwise.

Examples

Example 1

Loading
Loading