#P1162. 集结

集结

题目描述

张老师一直希望同济大学能够进入 ICPC 的 World Final,但是觉得同济大学 ACM 队太弱了。他想召集世界各地的上古大神来带领同济 ACM 队进行训练。

假设世界是一个 1×n1 \times n 的一维地图,所有格子的坐标都是 11nn 之间的整数。一开始地图上某一些格子有一位上古大神,其他的格子会有一些事件。每个格子里面只有一位上古大神或者只有一个事件。张老师希望能请到上古大神能集中到一个格子上。

约定集结的坐标点之后,上古大神们依次开始移动。每一次有一位上古大神向着集结的坐标直线前进,不会向相反方向走。当一位上古大神进入一个格子的时候,如果这个格子里面有一个事件没有触发,那么就会触发这个事件让上古大神获得或者失去一些体力。当上古大神某一个时刻体力小于 00 的时候就不能到达集结点了(等于 00 依然可以到达)。一个事件只会触发一遍,已经触发过之后就不会再触发了。一位上古大神移动结束之后,另一位上古大神才开始移动。

张老师希望能将上古大神都请过来,但是不知道怎么安排集结点和移动顺序才能让所有人都能到达。他想让你规划一个集结的方案。

注意所有上古大神都需要移动且仅移动一次,即使是和集结点在一个坐标上也需要移动。

输入格式

第一行两个整数 n,mn, m1mn1000001 \leq m \leq n \leq 100\,000)表示格子的个数是 nn,一共有 mm 位上古大神。

接下来 mm 行,有 22 个整数 ai,bia_i, b_i1ain1 \leq a_i \leq n, 1bi10000001 \leq b_i \leq 1\,000\,000),表示第 ii 位上古大神在坐标 aia_i 的位置上,有 bib_i 的体力。保证上古大神初始不会在同一个位置上。

接下来一行,包括 nn 个整数 c1,c2,,cnc_1, c_2, \ldots, c_n,第 ii 个整数 cic_i1000000ci1000000-1\,000\,000 \leq c_i \leq 1\,000\,000)表示坐标为 ii 的位置的情况:

  • 等于 00:这个位置有一位上古大神;
  • 不等于 00:这个位置有一个事件,代表上古大神的体力变化量,大于 00 为增加,小于 00 为减少。

输出格式

第一行输出一个数代表集结点。

第二行输出 mm 个数,第 ii 个数代表第 ii 个移动的上古大神序号。这个序号和输入的顺序相同。

如果有多种方案,输出任意一种。如果不能使所有人都到达,那么输出 1-1

样例输入

8 3
1 15
8 1
5 10
0 -5 -5 -5 0 -5 -5 0

样例输出

7
3 1 2