#505. 💡 点灯问题

💡 点灯问题

题目背景

小何的新公寓安装了一块智能灯阵,灯阵是 (N×N) (N\times N) 的方格,每盏灯都能通过遥控器控制。 然而这支遥控器似乎出了点毛病:每次按下一个按键时,不仅那一盏灯会亮起,它上下左右相邻的灯也会一同被翻转(亮的变灭,灭的变亮)。

现在,小何发现所有的灯都处于关闭状态(全黑)。 他想知道:是否存在一种点击方式,可以让所有灯最终都亮起来? 如果可以,请输出任意一种可行的点击方案。

游戏规则

  • 灯阵大小为 (N×N) (N\times N)
  • 初始状态:所有灯均为黑(灭)。
  • 每次点击一个格子,会翻转该格子及其上下左右相邻格子的亮灭状态。
  • 目标:使所有灯最终都变为亮(白)。
  • 点击顺序不影响结果(因为翻转是可交换的)。

输入格式

输入一行一个整数 NN

输出格式

  • 若无论如何都无法让所有灯亮起,输出一行:

    NO
    
  • 否则输出:

    YES
    

    接着输出 (N) 行,每行 (N) 个整数 01(空格分隔), 表示点击方案矩阵:

    • 1 表示该格子需要点击一次;
    • 0 表示该格子不需要点击。

样例输入

3

样例输出

YES
1 0 1
0 1 0
1 0 1

评测数据规模

对于所有评测数据,1N3001 \le N \le 300