#993. 神父过河

神父过河

题目描述

nn 个神父和 nn 个恶魔一同来到了河岸,他们现在要过河。

他们可以通过一个容量为 mm 的船过去。

在渡河过程中,在河岸和船上,神父的数量都不能小于恶魔的数量(或者神父数量为 0),否则会被吃掉。

船不会自己划,因此最少需要一个神父或者一个恶魔去划船。

请你设计一个渡河流程,使得 nn 个神父和 nn 个恶魔都能过河。

输入格式

第一行两个整数 nn 和 mm,含义如题目描述。

输出格式

第一行输出最少的步数 tt,如果不行,输出 −1-1。

接下来 tt 行,每行两个整数 x,yx,y 分别表示此次参与划船的神父数量和恶魔数量。

如果有多种方案,河流湍急,优先考虑在前面操作中乘船总人数多的,如果还一样,输出神父较多的。

输入输出样例

3 2
11
1 1
1 0
0 2
0 1
2 0
1 1
2 0
0 1
0 2
1 0
1 1
2 2
5 
1 1
1 0
2 0
1 0
1 1

说明/提示

样例解释

初始时,左岸有 33 个神父和 33 个恶魔,船也在左岸;右岸没有人。

船每次到达对岸后,下一次操作的方向会自动反转。因此,第 1,3,5,…1,3,5,\ldots 次操作表示从左岸前往右岸,第 2,4,6,…2,4,6,\ldots 次操作表示从右岸返回左岸。

样例中的渡河过程如下:

步数 航行方向 乘船人员 操作后左岸人数 操作后右岸人数
初始 — 33 个神父,33 个恶魔 00 个神父,00 个恶魔
11 左岸 →\to 右岸 11 个神父,11 个恶魔 2,22,2 1,11,1
22 右岸 →\to 左岸 11 个神父 3,23,2 0,10,1
33 左岸 →\to 右岸 22 个恶魔 3,03,0 0,30,3
44 右岸 →\to 左岸 11 个恶魔 3,13,1 0,20,2
55 左岸 →\to 右岸 22 个神父 1,11,1 2,22,2
66 右岸 →\to 左岸 11 个神父,11 个恶魔 2,22,2 1,11,1
77 左岸 →\to 右岸 22 个神父 0,20,2 3,13,1
88 右岸 →\to 左岸 11 个恶魔 0,30,3 3,03,0
99 左岸 →\to 右岸 22 个恶魔 0,10,1 3,23,2
1010 右岸 →\to 左岸 11 个神父 1,11,1 2,22,2
1111 左岸 →\to 右岸 11 个神父,11 个恶魔 0,00,0 3,33,3

整个过程中,左岸、右岸和船上均满足:神父数量不少于恶魔数量,或者神父数量为 00。

最终,所有神父和恶魔都到达了右岸,共进行了 1111 次航行。

数据范围

2≤n≤100 , m≤n2 \le n \le 100\ ,\ m \le n