快乐计算机绘画竞赛 (JCPC) 是世界上规模最大的绘画比赛,在 Byteland 极受欢迎。为了让新手更容易加入社区,Jeff 创建了一个新的注册系统。
Krans 负责为 Byteland 默认城市的 JCPC 区域赛注册参赛者,他发现使用提供的界面输入出生日期很不方便。在本题中,你将通过实现脚本中输入原始数据日期的部分来帮助他自动化这一过程。
输入出生日期的注册系统界面如下所示:
在任何时刻,都有一个当前选定的年份(在 1900 年到 2100 年之间)和一个当前选定的月份。月份共有十二个月,一月为第一个月,十二月为最后一个月。当前年份的当前月份中可能选定了一天,也可能没有选定任何日期。
你可以执行三种类型的操作:更改选定年份、更改选定月份和选择某一天。
要更改选定年份,你可以点击年份并向下滚动以增加年份,或向上滚动以减少年份。如果选定的年份已经与你需要的年份一致,脚本应不执行任何操作。无法向上滚动到 1900 年以下的值,也无法向下滚动到 2100 年以上的值。每次更改当前年份时,当前月份保持不变,但日期的选择(如果已设置)会消失。
要更改选定月份,你可以点击月份名称左侧的按钮以减小月份(向一月方向移动),或点击月份名称右侧的按钮以增加月份(向十二月方向移动)。如果当前月份是一月,点击左侧按钮,或如果当前月份是十二月,点击右侧按钮,均不会产生任何效果。每次更改当前月份时,当前年份保持不变,但日期的选择(如果已设置)会消失。
要选择日期(或更改日期选择),你必须点击周对齐矩阵中对应的单元格,该矩阵由 4、5 或 6 行和 7 列组成。行对应于该月内包含任意日期的周(周可以是完整的,也可以是不完整的),列对应于星期几。注意,在 Jeff 的日历中,每周从周日开始,到周六结束。
例如,如上图所示,如果当前月份有 31 天,且该月的第一天是周二,那么该月的第一天位于第一行的第三个单元格,而该月的最后一天位于第五行的第五个单元格。
你需要帮助 $t$ 名参赛者在系统中注册。对于每名参赛者,给定当前选定的日期和他们的出生日期。你的任务是检查该日期是否正确(即该日期确实存在),如果存在,则输出将当前日期更改为给定出生日期的操作序列。
请记住,有些年份是闰年,即二月包含额外的第 29 天。如果年份能被 400 整除,或者能被 4 整除但不能被 100 整除,则该年为闰年。例如,1984 年和 2000 年是闰年,而 1990 年和 2100 年不是。
输入格式
输入的第一行包含一个整数 $t$ ($1 \le t \le 100\,000$),表示需要处理的用户数量。接下来是 $t$ 个用户的描述。
用户描述的第一行包含三个整数 $d_c, m_c$ 和 $y_c$ ($1 \le d_c \le 31, 1 \le m_c \le 12, 1900 \le y_c \le 2100$),表示界面中当前选定的日、月、年。保证该日期是一个正确的日期,即该日期确实存在。描述的第二行包含三个整数 $d_n, m_n$ 和 $y_n$ ($1 \le d_n \le 31, 1 \le m_n \le 12, 1900 \le y_n \le 2100$),表示用户想要在注册系统中输入的日、月、年。
保证请求的日期与当前日期不同。
输出格式
对于每个用户,按输入中描述的顺序输出一行。如果请求的日期不存在,输出 “Unspecified Server Error”。否则,输出将在日历中选择目标日期的命令。以下是构建命令的规则。如果请求的日期正确(存在),则按以下格式输出输入新日期的命令:年份更改、月份更改、日期选择。所有非空块必须用单个空格分隔。
- 如果当前年份与请求的年份相同,则年份更改块必须为空。否则,输出
u:n表示向上滚动(减小)当前年份 $n$ 次,或d:n表示向下滚动(增加)当前年份 $n$ 次。 - 如果当前月份与请求的月份相同,则月份更改块必须为空。否则,输出
l:n表示点击左侧按钮 $n$ 次,或r:n表示点击右侧按钮 $n$ 次。不允许执行无效的点击,即在一月点击左侧或在十二月点击右侧。 - 由于目标日期总是与初始日期不同,日期选择部分总是非空的。输出
[r][c],其中 $r$ 和 $c$ 分别是新日期在月历周对齐表中的行号和列号(从 1 开始计数)。
注意,这些规则保证对于任何存在的日期,都有且仅有一种有效的操作序列可以将当前日期更改为请求的日期。
样例
样例输入 1
4 4 4 2019 30 6 2020 26 10 2019 1 1 2019 26 10 2019 20 10 2018 26 10 2019 29 2 2019
样例输出 1
d:1 r:2 [5][3] l:9 [1][3] u:1 [3][7] Unspecified Server Error