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

题目描述

小明在游戏中搭建了一堵长为的城墙,墙上有个支撑点。为了知道墙是否足够坚固,小明喊来他的好朋友小刚帮助他进行测试。

小刚有一种特殊的炮弹可以对墙上任意一个支撑点进行轰击,收到轰击的支撑点将受到点伤害,此外,炮弹还会对个支撑点造成溅射伤害(受到的伤害依次减1)。

现在知道每个支撑点能够承受的最大伤害,1<=n,m<=2^5当时视为该支撑点已经完全损坏。小刚一共进行轮炮击,在炮击结束之后请你计算出一共有多少个支撑点被完全损坏。

输入描述:


每个测试只有一组测试用例,每组测试用例的描述如下:

每组测试用例的第一行包含两个正整数n和m—    墙的支撑点个数和炮击的次数。

第二行包含n个正整数—第i个支撑点最多能够承受的伤害。

接下来m行,每行包含两个正整数pi和k(1<=k<=n,1<=pi<=n)—轰击的支撑点和该次炮击的伤害。

输出描述:

对于每个测试用例,第一行输出一个非负整数num表示完全损坏的支撑点个数,第二行从小到大输出num个支撑点的编号。

示例1

输入

复制
10 2
10 10 10 10 10 10 10 10 10 10
5 4
1 10

输出

复制
5
1 2 3 4 5

说明

在第一个例子中,第一枚炮弹轰击之后所有结点的耐久度为10 9 8 7 6 7 8 9 10 10,

第二枚炮弹轰击之后耐久为0 0 0 0 0 2 4 6 8 9,所以完全损坏的支撑点编号为1 2 3 4 5

示例2

输入

复制
5 1
100 28 22 50 1
2 5

输出

复制
1
5
示例3

输入

复制
1 1
100
1 1

输出

复制
0