小苯的回文询问
时间限制:C/C++/Rust/Pascal 2秒,其他语言4秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

小苯有一个长度为 n 的数组 a,他定义一个数组是好数组,当且仅当该数组是一个回文数组,且长度严格大于 2

他现在进行了 q 次询问,每次询问都给出一段区间 [l, r],他想知道 a 在这一段区间中是否存在一个子序列是一个好数组,请你帮帮他吧。

输入描述:

输入包含 q + 2 行。
第一行两个正整数 n, q\ (1 \leq n \leq 10^5),\ (1 \leq q \leq 2 \times 10^5),以空格分隔,分别表示小苯拥有的数组的长度,以及他的询问次数。
第二行n 个正整数 a_i\ (1 \leq a_i \leq 10^9),表示数组 a 的元素。
接下来 q 行,每行两个正整数 [l, r]\ (1 \leq l \leq r \leq n),以空格分隔,表示小苯每次询问的区间。

输出描述:

输出包含 q 行,如果对于当前询问的区间,存在一个好子序列是一个好数组,则输出 "YES",否则输出 "NO"。(不含双引号)
示例1

输入

复制
9 3
1 1 2 1 1 3 1 1 2
1 4
2 7
1 2

输出

复制
YES
YES
NO

说明

[1, 4] 可以选择子序列:(a_1, a_3, a_4) 即:{1, 2, 1},满足是一个好数组。(注意:子序列可以不连续)