立希坐地铁
题号:NC312087
时间限制:C/C++/Rust/Pascal 3秒,其他语言6秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
Special Judge, 64bit IO Format: %lld

题目描述

\hspace{15pt}其实,设定上MyGO!!!!!的成员分别是要乐奈、高松灯、千早爱音、长崎素世、椎名立希。
\hspace{15pt}是吗……为什么要告诉我这些?而且为什么是这个顺序?
\hspace{15pt}没什么,只是想让你知道。
\hspace{15pt}西京的城市规划非常标准。地铁线路由 n 条水平方向、 n 条竖直方向、 \tfrac n 2 条环形的地铁构成了一个 n \times n 的正方形网格(保证 n 一定是偶数),在网格的每一个格点都有一个地铁站。设坐标 (x, y)x 表示行号(自上而下递增),y 表示列号(自左向右递增):
\hspace{23pt}\bullet\,水平方向的地铁有东(\texttt{E},即 y 增加)、西(\texttt{W},即 y 减少)两条线路运行;
\hspace{23pt}\bullet\,竖直方向的地铁有南(\texttt{S},即 x 增加)、北(\texttt{N},即 x 减少)两条线路运行;
\hspace{23pt}\bullet\,环形的地铁有顺时针(\texttt{C})、逆时针(\texttt{I})两条线路运行,第 k \left( 1 \le k \le \tfrac{n}{2} \right) 条环形线路经过所有满足 \min(x, n-x+1, y, n-y+1) = k 的地铁站,并按方形边界顺时针/逆时针依次连接相邻站点,形成闭环。
\hspace{15pt}每一条线路在相邻两站之间所需的运行时间均为 2 个单位时间。同一物理轨道(水平/竖直/环形)的两个相反运行方向被视为两条不同的地铁线路。


\hspace{15pt}由于规划原因,西京只有 m 个地铁站可以进行站内换乘,第 i 个换乘站可以用坐标 (x_i, y_i) 表示。并且因为地铁站修得非常不合理,导致同站不同线路的换乘距离非常长,每次站内换乘都需要步行 1 个单位时间。起始站上车和终点站出站不受此限制且无步行代价。
\hspace{15pt}因为每一条地铁线路相邻班次的间隔时间很短,所以我们可以忽略换乘时的等待时间。
\hspace{15pt}只有在 m 个指定的换乘站才允许改变当前乘坐的地铁线路。

\hspace{15pt}立希是一位普通游客,她理所当然地完全不认识路。立希现在正在坐标为 (s_x, s_y) 的起点地铁站,她要去坐标为 (e_x, e_y) 的终点地铁站。初始时,立希可以选择任意方向、任意路线的地铁乘坐。
\hspace{15pt}你需要构造一个用时最短的方案使得立希能通过地铁和站内换乘到达终点,或者报告没有可行的方案。

输入描述:

\hspace{15pt}第一行输入两个正整数 n,m \left( 1 \le n \le 2 \times 10^5;\, 0 \le m \le 2 \times 10^5 \right),表示地铁线路数量,换乘站数量。
\hspace{15pt}第二行输入四个正整数 s_x, s_y, e_x, e_y \left( 1 \le s_x, s_y, e_x, e_y \le n \right),表示起点地铁站 s、终点地铁站 e 的横纵坐标。
\hspace{15pt}此后 m 行,第 i 行输入两个正整数 x_i, y_i \left( 1 \le x_i, y_i \le n \right),表示第 i 个换乘站的横纵坐标。

\hspace{15pt}数据保证 n 一定为偶数,换乘站坐标两两不同,起点地铁站坐标不等于终点地铁站坐标。

输出描述:

\hspace{15pt}如果无法构造方案,直接输出 \texttt{Impossible!}。否则,请参考下方的格式输出。

\hspace{15pt}第一行输出一个整数,表示最短的用时。
\hspace{15pt}第二行输出一个整数 \textrm{cnt},表示要乘坐的地铁数量。
\hspace{15pt}第三行输出两个整数 s_x, s_y,表示立希乘坐地铁的起点站 s 的横纵坐标。
\hspace{15pt}此后 2 \times \textrm{cnt} 行:
\hspace{23pt}\bullet\,第一行输出一个字符 \textrm{ch} \left( \textrm{ch} \in \left[ \texttt{E}, \texttt{W}, \texttt{S}, \texttt{N}, \texttt{C}, \texttt{I} \right] \right),表示立希乘坐地铁的方向。
\hspace{23pt}\bullet\,第二行输出两个整数 p_x, p_y,表示立希乘坐地铁的换乘/终点站 p 的横纵坐标。

\hspace{15pt}注意:除最后一段外,每段乘车的终点 p 必须是一个可换乘站,地铁乘坐方向存在且可以按顺序连接前后两个地铁站,不允许同站同方向换乘,最后一行出站坐标必须为 e_x, e_y

\hspace{15pt}如果存在多个解决方案,您可以输出任意一个,系统会自动判定是否正确。注意,自测运行功能可能因此返回错误结果,请自行检查答案正确性。
示例1

输入

复制
2 0
1 1 2 2

输出

复制
4
1
1 1
C
2 2

说明

\hspace{15pt}在这个样例中,一种最优方案为:
\hspace{23pt}\bullet\,s 走顺时针环线花费 2 个单位时间到达 p_1 = (1, 2)
\hspace{23pt}\bullet\,再从 p_1 走顺时针环线花费 2 个单位时间到达 p_2 = (2, 2)
\hspace{15pt}由于不需要换乘,因此总花费时间为 4 个单位时间。可以证明,这是最优方案。

\hspace{15pt}将输出中的字母 \texttt{C} 改成 \texttt{I} 也是合法答案。
示例2

输入

复制
6 1
1 1 4 4
1 4

输出

复制
13
2
1 1
E
1 4
S
4 4

说明

\hspace{15pt}这个样例的地铁线路如题面中的图片所示。一种最优方案为:
\hspace{23pt}\bullet\,s 走东方向水平线路花费 6 个单位时间到达 p_1 = (1, 4)
\hspace{23pt}\bullet\,站内换乘,由东方向水平线路换乘至南方向竖直线路花费 1 个单位时间,
\hspace{23pt}\bullet\,再从 p_1 走南方向竖直线路花费 6 个单位时间到达 p_2 = (4, 4)
\hspace{15pt}总共花费 13 个单位时间。可以证明,这是最优方案。
示例3

输入

复制
6 1
1 1 4 5
1 4

输出

复制
Impossible!