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

Virtual contest is a way to take part in past contest, as close as possible to participation on time. It is supported only ACM-ICPC mode for virtual contests.
If you've seen these problems, a virtual contest is not for you - solve these problems in the archive.
If you just want to solve some problem from a contest, a virtual contest is not for you - solve this problem in the archive.
Never use someone else's code, read the tutorials or communicate with other person during a virtual contest.

No tag edit access

F. Passports

time limit per test

2 secondsmemory limit per test

512 megabytesinput

standard inputoutput

standard outputGleb is a famous competitive programming teacher from Innopolis. He is planning a trip to *N* programming camps in the nearest future. Each camp will be held in a different country. For each of them, Gleb needs to apply for a visa.

For each of these trips Gleb knows three integers: the number of the first day of the trip *s*_{i}, the length of the trip in days *len*_{i}, and the number of days *t*_{i} this country's consulate will take to process a visa application and stick a visa in a passport. Gleb has *P* (1 ≤ *P* ≤ 2) valid passports and is able to decide which visa he wants to put in which passport.

For each trip, Gleb will have a flight to that country early in the morning of the day *s*_{i} and will return back late in the evening of the day *s*_{i} + *len*_{i} - 1.

To apply for a visa on the day *d*, Gleb needs to be in Innopolis in the middle of this day. So he can't apply for a visa while he is on a trip, including the first and the last days. If a trip starts the next day after the end of the other one, Gleb can't apply for a visa between them as well. The earliest Gleb can apply for a visa is day 1.

After applying for a visa of country *i* on day *d*, Gleb will get his passport back in the middle of the day *d* + *t*_{i}. Consulates use delivery services, so Gleb can get his passport back even if he is not in Innopolis on this day. Gleb can apply for another visa on the same day he received his passport back, if he is in Innopolis this day.

Gleb will not be able to start his trip on day *s*_{i} if he doesn't has a passport with a visa for the corresponding country in the morning of day *s*_{i}. In particular, the passport should not be in another country's consulate for visa processing.

Help Gleb to decide which visas he needs to receive in which passport, and when he should apply for each visa.

Input

In the first line of the input there are two integers *N* (1 ≤ *N* ≤ 22) and *P* (1 ≤ *P* ≤ 2)—the number of trips and the number of passports Gleb has, respectively.

The next *N* lines describe Gleb's trips. Each line contains three positive integers *s*_{i}, *len*_{i}, *t*_{i} (1 ≤ *s*_{i}, *len*_{i}, *t*_{i} ≤ 10^{9})—the first day of the trip, the length of the trip and number of days the consulate of this country needs to process a visa application. It is guaranteed that no two trips intersect.

Output

If it is impossible to get all visas on time, just print "NO" (quotes for clarity). Otherwise, print "YES" and *N* lines describing trips. For each trip, first print number of the passport Gleb should put this country's visa in, and then print number of the day he should apply for it. Print trips in the same order as they appear in the input. Days are numbered from 1, starting with tomorrow—the first day you can apply for a visa. Passports are numbered from 1 to *P*.

If there are several possible answers, print any of them.

Examples

Input

2 1

3 1 1

6 1 1

Output

YES

1 1

1 4

Input

3 1

13 2 2

7 3 1

19 3 4

Output

YES

1 10

1 1

1 2

Input

7 2

15 1 1

14 1 1

18 1 1

21 1 1

9 4 6

22 2 5

5 4 3

Output

YES

2 13

1 1

1 16

1 19

1 2

2 16

2 1

Input

3 1

7 3 1

13 2 3

19 3 4

Output

NO

Note

Examples with answer "YES" are depicted below.

Each cell of the stripe represents a single day. Rectangles represent trips, each trip starts in the morning and ends in the evening. Rectangles with angled corners represent visa applications. Each application starts in the middle of a day and ends *t*_{i} days after. The trip and the visa application for the same country have the same color.

In examples with two passports, visa applications and trips depicted above the time stripe are made using the first passport, visa applications and trips depicted below the time stripe are made using the second passport.

Example 1:

Example 2:

Example 3:

Codeforces (c) Copyright 2010-2018 Mike Mirzayanov

The only programming contests Web 2.0 platform

Server time: Dec/10/2018 17:22:12 (d1).

Desktop version, switch to mobile version.

Supported by

User lists

Name |
---|