#s1021. 区间开平方根

区间开平方根

区间平方根操作

题目描述

给定一个长度为 nn 的整数数组 aa,以及 qq 次区间操作。

每次操作给定一个区间 [l,r][l,r],需要对所有满足 lirl \le i \le r 的下标 ii 执行如下更新:

a[i]=a[i]a[i] = \left\lfloor \sqrt{a[i]} \right\rfloor

其中 x\lfloor x \rfloor 表示对 xx 向下取整。

请在依次执行完所有 qq 次操作后,输出最终的数组 aa


输入格式

  • 第一行包含两个整数 n,qn, q,分别表示数组长度和操作次数。
  • 第二行包含 nn 个非负整数 a1,a2,,ana_1, a_2, \dots, a_n,表示初始数组。
  • 接下来 qq 行,每行包含两个整数 l,rl, r,表示一次区间操作。

输出格式

输出一行,包含 nn 个整数,表示所有操作完成后的数组。相邻整数之间用一个空格分隔。


数据范围

  • 1n5×1051 \le n \le 5 \times 10^5
  • 1q1051 \le q \le 10^5
  • 0ai10120 \le a_i \le 10^{12}
  • 1lrn1 \le l \le r \le n

样例


样例

输入

5 3
3 1 9 8 6
1 3
2 5
4 4

输出

1 1 1 1 2