在桌子上摆着 n 个盒子,左数第 i 个盒子里初始装着 ai 颗糖果。
接下来小 P 进行了 m 次操作,每次操作有参数 l,r,小 P 可以选择一个操作执行:
- 在左数第 l 个盒子到第 r 个盒子各放入一颗糖果。
- 将左数第 l 个盒子到第 r 个盒子任意重排列。
小 P 想知道,所有操作结束之后,每个位置的盒子当中,最多包含了多少糖果。
输入格式
第一行两个整数 n,m 表示盒子数和操作数。
第二行包含 n 个整数,第 i 个整数 ai 表示第 i 个盒子初始糖果数。
接下来 m 行每行两个整数 l,r 描述一次操作。
输出格式
输出一行 n 个整数,第 i 个整数表示左数第 i 个盒子中最多有多少糖果。
样例一
input
4 5 1 2 2 3 2 2 2 2 1 3 1 3 3 4
output
5 6 6 5
explanation
解释一种让第 4 个盒子糖果数为 5 的方法:
(1,2,2,3)→(1,3,2,3)→(1,4,2,3)→(1,2,4,3)→(2,3,5,3)→(2,3,3,5)
样例二
见附件下载。
数据范围与提示
对于 30% 的数据,保证 n≤5,m≤3。
对于 60% 的数据,保证 n,m≤5000。
对于 100% 的数据,保证 1≤n,m≤5×105,1≤ai≤109,1≤l≤r≤n。
时间限制:2s
空间限制:512MB