牛牛的凑数游戏
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

对于一个多重数集,对于一非负整数,若存在中所有数字之和恰好等于,则说可以表示
显然对于任意的多重数集都可以表示0,因为空集是所有集合的子集。
牛牛定义集合的最小不能表示数为,一个最小的非负整数不能表示
举个例子来说,例如,那么集合的最小不能表示数就为7。
因为子集的和为0,子集的和为1,子集的和为2,子集的和为3,子集的和为4,子集的和为5,子集的和为6。
但是无法找到子集权值和恰好为7的子集,所以7无法表示。
现在有一个长度大小为n的正整数数组,牛牛每次选择一个区间,他想要知道假定给出的多重数集为时,该集合的最小不能表示数是多少。

输入描述:

第一行输入两个正整数n,m。
接下来一行输入n个正整数a_i表示输入的正整数数组。
接下来m行,每行输入两个正整数l,r表示查询的区间。

输出描述:

对于每一个查询,输出最小不能表示数
示例1

输入

复制
8 6
1 2 3 4 5 17 1 99
1 5
2 5
1 6
1 7
1 8
3 8

输出

复制
16
1
16
34
34
2

备注:

对于前10%的测试数据,保证
对于前20%的测试数据,保证
对于另10%的测试数据,保证输入的a_i单调非降
对于另10%的测试数据,保证输入的a_i为2的非负整数幂。
对于100%的测试数据,保证