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

题目描述

你有一个 长的正整数序列,记作 ,还有一个 长的 序列,记作

你需要支持 次操作,操作有两种:

  1. 给定 ,将 序列中下标在 内的元素 翻转,即原来为 的变成 ,原来为 的变成
  2. 给定 ,询问是否存在一个三元组 满足 都为 且存在边长分别是 的三角形。

输入描述:

第一行两个正整数 

第二行  个正整数,表示序列  。

第三行  个正整数,表示序列  。

输出描述:

接下来  行,每行三个正整数 ,分别表示操作种类和操作区间。

对于每一个操作  输出一行字符串,如果存在则输出 "YES" ,否则输出 "NO" ,不含引号。

示例1

输入

复制
6 8
1 2 3 4 5 6
1 1 0 1 1 1
2 1 6
1 5 6
2 1 6
1 3 3
2 1 6
2 3 6
1 4 6
2 3 6

输出

复制
YES
NO
YES
NO
YES

备注: