Please subscribe to the official Codeforces channel in Telegram via the link: https://t.me/codeforces_official.
×

No tag edit access

B. Interesting Array

time limit per test

1 secondmemory limit per test

256 megabytesinput

standard inputoutput

standard outputWe'll call an array of *n* non-negative integers *a*[1], *a*[2], ..., *a*[*n*] interesting, if it meets *m* constraints. The *i*-th of the *m* constraints consists of three integers *l*_{i}, *r*_{i}, *q*_{i} (1 ≤ *l*_{i} ≤ *r*_{i} ≤ *n*) meaning that value should be equal to *q*_{i}.

Your task is to find any interesting array of *n* elements or state that such array doesn't exist.

Expression *x*&*y* means the bitwise AND of numbers *x* and *y*. In programming languages C++, Java and Python this operation is represented as "&", in Pascal — as "and".

Input

The first line contains two integers *n*, *m* (1 ≤ *n* ≤ 10^{5}, 1 ≤ *m* ≤ 10^{5}) — the number of elements in the array and the number of limits.

Each of the next *m* lines contains three integers *l*_{i}, *r*_{i}, *q*_{i} (1 ≤ *l*_{i} ≤ *r*_{i} ≤ *n*, 0 ≤ *q*_{i} < 2^{30}) describing the *i*-th limit.

Output

If the interesting array exists, in the first line print "YES" (without the quotes) and in the second line print *n* integers *a*[1], *a*[2], ..., *a*[*n*] (0 ≤ *a*[*i*] < 2^{30}) decribing the interesting array. If there are multiple answers, print any of them.

If the interesting array doesn't exist, print "NO" (without the quotes) in the single line.

Examples

Input

3 1

1 3 3

Output

YES

3 3 3

Input

3 2

1 3 3

1 3 2

Output

NO

Codeforces (c) Copyright 2010-2018 Mike Mirzayanov

The only programming contests Web 2.0 platform

Server time: Dec/18/2018 19:19:44 (f1).

Desktop version, switch to mobile version.

Supported by

User lists

Name |
---|