We are going to build a new city: the Metropolis. The city is going to be built on an infinite square grid. The
finished city will consist of
You are given the planned coordinates of the
- The building crew has only one crane, so the Metropolis has to be constructed one skyscraper at a time.
- The first skyscraper you build can be any one of the
planned skyscrapers. - Each subsequent skyscraper has to share a side or a corner with at least one of the previously built skyscrapers (so that it's easier to align the new skyscraper to the grid properly).
- When building a skyscraper, there has to be a way to deliver material to the construction site from the
outside of Metropolis by only moving it through empty cells that share a side. In other words, there should
be a path of side-adjacent empty cells that connects the cell that will contain the skyscraper to some cell
with and/or .
If a solution exists, let's denote the numbers of skyscrapers in the order in which they should be built by
Type 1: You may produce any valid order.
Type 2: You must find the order that maximizes
Input
The first line contains a single integer
The second line contains a single integer
Then,
It is guaranteed that no two skyscrapers coincide.
Output
If it is impossible to build the skyscrapers according to the given rules, print a single line containing the string NO
.
Otherwise, print YES
. For each
In subtasks with
Scoring
Subtask
Subtask
Subtask
Subtask
Subtask
Subtask
Subtask
Sample Input 1
3
2
0 0
0 1
0 2
Sample Output 1
YES
1
2
3
Sample Input 2
3
1
0 0
1 1
2 2
Sample Output 2
YES
2
3
1
Sample Input 3
2
1
0 0
0 2
Sample Output 3
NO
Note
In the first example, there are three skyscrapers in a row. All of them can always be reached from outside the Metropolis, and there are four build orders which preserve connectivity:
Since
In the second example, the only difference from the first example is that skyscraper
In the third example, the Metropolis is disconnected. We obviously can't build that.
Comments