骑士的旅行
测试数据来自 system/1791
描述
“骑士的旅行”是最近流行的一种棋盘游戏。N*N的棋盘上,我们于时刻0在第X行、第Y列的格子上放置一个骑士。每个时刻将骑士按照规则进行一步移动,即某个坐标改变2个单位,同时另一个坐标改变1个单位。游戏规则中,棋盘的每个格子并不总是可以使用的,具体来说,每个格子都被赋予一个正整数,只有当前的时刻是此正整数的倍数时,这个格子才能使用。当然,游戏过程中的每个时刻,骑士必须处在一个可以使用的格子上。游戏者需要仔细的设计骑士的移动方案才能让游戏进行下去。
给你一个游戏的初始局面,即棋盘的大小,时刻0骑士的位置,以及每个格子被赋予的正整数,请你计算能否对骑士进行T次操作(即游戏能否进行到时刻T)。如果能,请找出时刻T骑士可能出现的所有位置。
格式
输入格式
第1行,包括两个正整数N,T,分别表示棋盘的大小,和操作次数。
第2行,包括两个正整数X, Y,表示时刻0骑士所处的位置。
第3~N+2行,每行N个不超过10^9的正整数。第i+2行的第j个整数表示棋盘上第i行、第j列的格子被赋予的整数。
输出格式
第一行,包含一个非负整数M,表示T次操作后骑士可能出现的位置总数。
接下来M行,每行包括两个正整数,表示一个骑士可能出现的位置。将这些位置按照行编号递增(行编号相同时按列编号递增)的顺序输出。
样例1
样例输入1
3 2
1 1
1 3 2
2 3 2
3 1 1
样例输出1
2
1 1
1 3
限制
1s
提示
对于30%的数据,有1 ≤ T ≤ 50,000;
对于100%的数据,有3 ≤ N ≤ 30,1 ≤ T ≤ 1,000,000,1 ≤ X, Y ≤ N。
来源
COCI 2011/2012