题号:NC238812
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
Special Judge, 64bit IO Format: %lld
题目描述
牛牛最近迷上了一款名为《牛的世界》的沙盒游戏。
在这款沙盒游戏里,有一个大小为

的初始平面,第

行第

列的位置编号为
%5Ctimes%20n%2Bj)
。游戏者可以在其上放置一些方块,每一个方块占

的面积。由于这是牛世界新开发的沙盒游戏,难免有亿点简陋,所以游戏者可以放置的方块只有草方块和骨头。
为了给这个游戏增加一点趣味,牛牛决定增加一种名为“牛排”的方块组。
为了符合实际情况,“牛排”这个方块组的放置有一定的限制。
1. “牛排”方块组由四块骨头方块构成,为

及其旋转、翻转可以得到的形状;
2. “牛排”方块组的四块骨头方块必须放置在同一高度上,且每一块骨头方块下恰好有一块草方块;
牛妹受邀为牛牛的方块组进行一些测试,于是她把整块

的初始平面的每一个位置上上都放置了一块草方块,但由于某些原因,她在
左上角放置的
的草方块消失了。
牛牛看到牛妹铺好的地图,决定用他新发明的“牛排”方块组将这

块草方块全部铺满,但他还要完善他的其他方块组,于是这个问题就交给了你。你需要告诉他一种铺排方式,或者告诉他这是不可能实现的。
输入描述:
输入共一行,为一个整数
,含义见题面。
输出描述:
输出可能有一行或者若干行。
如果不存在合法的铺排方式,则输出
。
否则第一行输出一个整数
表示要铺的“牛排”方块组的个数。
接下来
行,每行输出
个整数,表示一个“牛排”方块组中四个方块所在的位置的编号,其中第
行第
列的位置编号为
。
示例1
说明
白色的格子表示能放置“牛排”方块组的位置,一共有

块,但是一个“牛排”方块组占

个方块,一定不可能全部铺满。
示例2
输出
复制
8
3 16 9 15
32 33 27 31
22 21 20 26
4 5 10 6
11 18 12 24
28 34 36 35
17 30 23 29
13 14 19 25