小红的线段
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
Special Judge, 64bit IO Format: %lld

题目描述

\,\,\,\,\,\,\,\,\,在平面直角坐标系中有 2\times n 个点和一条直线 y = kx + b
\,\,\,\,\,\,\,\,\,小红准备在这 2\times n 个点中连 n 条线段(每个点只能连接一次),她希望 和直线有交点的线段 的数量尽可能多。
\,\,\,\,\,\,\,\,\,请你给出一个连接方案。

输入描述:

\,\,\,\,\,\,\,\,\,第一行输入三个整数 n, k, b(1 \leq n \leq 10^3; -10^5 \leq k, b \leq 10^5),表示有 2\times n 个点和直线 y = kx + b

\,\,\,\,\,\,\,\,\,接下来 2\times n 行,每行两个整数 x, y(-10^5 \leq x, y \leq 10^5),表示一个点的坐标。保证没有两个点的坐标相同。

输出描述:

\,\,\,\,\,\,\,\,\,先输出一个整数 m,表示有 m 条线段和直线有交点。
\,\,\,\,\,\,\,\,\,接下来n行,第i行输出两个正整数 u_i,v_i(1 \leq u_i, v_i \leq 2 \times n; u_i \neq v_i) 和一个字符 \tt Y 或者 \tt N,代表连接第u_i个点和第v_i个点,以及是否和直线有交点。
\,\,\,\,\,\,\,\,\,如果存在多个解决方案,您可以输出任意一个,系统会自动判定是否正确。注意,自测运行功能可能因此返回错误结果,请自行检查答案正确性。
示例1

输入

复制
2 -1 2
0 0
0 1
1 0
1 1

输出

复制
1
1 2 N
3 4 Y

说明

\,\,\,\,\,\,\,\,\,连接第一个点和第二个点,和直线没有交点。连接第三个点和第四个点,和直线有交点。