Phủ bảng

Xem dạng PDF

Gửi bài giải

Điểm: 100,00
Giới hạn thời gian: 1.0s
Giới hạn bộ nhớ: 256M
Input: stdin
Output: stdout

Người đăng:
Dạng bài
Ngôn ngữ cho phép
C++, Pascal, Python

Hãy tìm một cách phủ kín bảng ~n \times n~ bị mất một ô bằng các quân L-triomino, hoặc chỉ ra không tồn tại cách làm như thế. Biết hình L-triomino là hình có ~3~ ô vuông đơn vị được tạo thành khi ta bỏ ~1~ ô vuông từ hình vuông kích thước ~2 \times 2~. Bốn hình dưới đây mô tả bốn loại hình L-triomino:

Input

  • Dòng đầu tiên là số ~n~, ~n~ là một lũy thừa của ~2~, ~2 \le n \le 1024~.
  • Dòng thứ hai là hai số ~x, y~ là chỉ số hàng và cột của ô bị mất. Chú ý rằng các hàng đánh số từ ~1~ đến ~n~ từ trên xuống dưới, và các cột đánh số từ ~1~ đến ~n~ từ trái qua phải.

Output

  • Dòng đầu tiên in ra YES nếu tồn tại cách làm, in ra NO nếu ngược lại.
  • Nếu có cách làm thì in ra một bảng ~n \times n~, ô bị mất điền số ~0~, các ô còn lại điền số từ ~1~ đến ~10^9~ sao cho hai ô phủ bởi cùng một quân L-triomino thì có cùng số, còn hai ô phủ bởi khác quân L-triomino thì khác số.
  • Nếu có nhiều cách làm thì in ra một cách bất kì.

Example

Input 1
2
1 1
Output 1
YES
0 1
1 1
Input 2
2
1 2
Output 2
YES
69 0
69 69