Codeforces Round 408 (Div. 2)
F
Sequence Recovery
Codeforces
2800
原题
← E→
翻译中…

Zane once had a good sequence $*a*$ consisting of $*n*$ integers $*a*_{1}, *a*_{2}, ..., *a*_{*n*}$ — but he has lost it.

翻译中…

A sequence is said to be good if and only if all of its integers are non-negative and do not exceed $10^{9}$ in value.

翻译中…

image

翻译中…

However, Zane remembers having played around with his sequence by applying $*m*$ operations to it.

翻译中…

There are two types of operations:

翻译中…
  1. Find the maximum value of integers with indices $*i*$ such that $*l* ≤ *i* ≤ *r*$, given $*l*$ and $*r*$.
翻译中…
  1. Assign $*d*$ as the value of the integer with index $*k*$, given $*k*$ and $*d*$.
翻译中…

After he finished playing, he restored his sequence to the state it was before any operations were applied. That is, sequence $*a*$ was no longer affected by the applied type 2 operations. Then, he lost his sequence at some time between now and then.

翻译中…

Fortunately, Zane remembers all the operations and the order he applied them to his sequence, along with the distinct results of all type 1 operations. Moreover, among all good sequences that would produce the same results when the same operations are applied in the same order, he knows that his sequence $*a*$ has the greatest cuteness.

翻译中…

We define cuteness of a sequence as the bitwise OR result of all integers in such sequence. For example, the cuteness of Zane's sequence $*a*$ is $*a*_{1}$ OR $*a*_{2}$ OR ... OR $*a*_{*n*}$.

翻译中…

Zane understands that it might not be possible to recover exactly the lost sequence given his information, so he would be happy to get any good sequence $*b*$ consisting of $*n*$ integers $*b*_{1}, *b*_{2}, ..., *b*_{*n*}$ that:

翻译中…
  1. would give the same results when the same operations are applied in the same order, and
翻译中…
  1. has the same cuteness as that of Zane's original sequence $*a*$.
翻译中…

If there is such a sequence, find it. Otherwise, it means that Zane must have remembered something incorrectly, which is possible.

翻译中…

Input

翻译中…

The first line contains two integers $*n*$ and $*m*$ ($1 ≤ *n*, *m* ≤ 3·10^{5}$) — the number of integers in Zane's original sequence and the number of operations that have been applied to the sequence, respectively.

翻译中…

The $*i*$-th of the following $*m*$ lines starts with one integer $*t*_{*i*}$ (image) — the type of the $*i*$-th operation.

翻译中…

If the operation is type 1 ($*t*_{*i*} = 1$), then three integers $*l*_{*i*}$, $*r*_{*i*}$, and $*x*_{*i*}$ follow ($1 ≤ *l*_{*i*} ≤ *r*_{*i*} ≤ *n*$, $0 ≤ *x*_{*i*} ≤ 10^{9}$) — the leftmost index to be considered, the rightmost index to be considered, and the maximum value of all integers with indices between $*l*_{*i*}$ and $*r*_{*i*}$, inclusive, respectively.

翻译中…

If the operation is type 2 ($*t*_{*i*} = 2$), then two integers $*k*_{*i*}$ and $*d*_{*i*}$ follow ($1 ≤ *k*_{*i*} ≤ *n*$, $0 ≤ *d*_{*i*} ≤ 10^{9}$) — meaning that the integer with index $*k*_{*i*}$ should become $*d*_{*i*}$ after this operation.

翻译中…

It is guaranteed that $*x*_{*i*} ≠ *x*_{*j*}$ for all pairs $(*i*, *j*)$ where $1 ≤ *i* < *j* ≤ *m*$ and $*t*_{*i*} = *t*_{*j*} = 1$.

翻译中…

The operations are given in the same order they were applied. That is, the operation that is given first was applied first, the operation that is given second was applied second, and so on.

翻译中…

Output

翻译中…

If there does not exist a valid good sequence, print "NO" (without quotation marks) in the first line.

翻译中…

Otherwise, print "YES" (without quotation marks) in the first line, and print $*n*$ space-separated integers $*b*_{1}, *b*_{2}, ..., *b*_{*n*}$ ($0 ≤ *b*_{*i*} ≤ 10^{9}$) in the second line.

翻译中…

If there are multiple answers, print any of them.

翻译中…

Note

翻译中…

In the first sample, it is easy to verify that this good sequence is valid. In particular, its cuteness is $19$ OR $0$ OR $0$ OR $0$ OR $1$ $=$ $19$.

翻译中…

In the second sample, the two operations clearly contradict, so there is no such good sequence.

翻译中…

样例

Input #1
5 4
1 1 5 19
1 2 5 1
2 5 100
1 1 5 100
Output #1
YES
19 0 0 0 1
InputCopy OutputCopy
Input #2
5 2
1 1 5 0
1 1 5 100
Output #2
NO
InputCopy OutputCopy
题目信息
题号
796F
时间限制
2 s
内存限制
256 MB
标签
位运算
数据结构
贪心

题面与样例版权归 Codeforces 及出题人所有;中文翻译由 AI 生成(CI 管线),如有出入请以原文为准。