编程题
### 问题描述
给出一个长度为 $n$ 的整数序列 $a$,对于 $a$ 的任意子序列,如果其元素的乘积大于 $0$ 则认为它是合法的。
现在给出 $q$ 个操作,每个操作包含三个参数 $l,r,v$, 表示将 $a[l],a[l+1],\dots,a[r]$ 中的所有值乘上 $v$。求 $q$ 次操作完成后,序列 $a$ 的任意子序列中合法子序列数量。由于答案可能很大,你需要输出答案模 $10^9 + 7$ 的值。
一个序列的子序列是指选取该序列任意位置零个或多个元素组成的新序列。两个子序列不同当且仅当其至少有一个选取的位置不同。例如,对于序列 $[2,3,2,4,2]$,子序列 $[2]$ 有 $3$ 个,子序列 $[2,2]$ 也有三个。
### 输入格式
第一行两个整数 $n,q \space (1 \leq n,q \leq 10^5)$,代表序列长度和操作个数。
第二行 $n$ 个整数 $a_i \space (-10^9 \leq a_i \leq 10^9)$,代表序列的初始值。
接下来 $q$ 行,每行三个整数 $l,r,v\space (1 \leq l \leq r \leq n,-10^9 \leq v \leq 10^9)$,代表操作的参数。
### 输出格式
输出一行一个整数,代表操作完成后的序列中,合法子序列的个数。答案对 $10^9 + 7$ 取模。
### 样例输入
```
6 2
2 3 0 -4 6 1
1 3 2
2 4 -5
```
### 样例输出
```
15
```