CF269E String Theory

题目描述

### 题目翻译 #### 题目大意 Emuskald 想到了一种革命性的乐器:矩形竖琴。 矩形竖琴是由 $n$ 行和 $m$ 列组成的矩形 $n\times m$。行的编号从上到下为 $1$ 到 $n$。同样,列的编号从左到右为 $1$ 到 $m$。 弦销均匀地分布在每一侧,每个单元一个。因此,竖琴的左右两边各有 $n$ 根弦针,上下各有 $m$ 根弦针。竖琴上共有 $n+m$ 根不同的琴弦,每根琴弦连接两个不同的针脚,分别位于竖琴的不同侧面。 Emuskald 命令他的学徒建造有史以来第一架矩形竖琴。但是,他忘记提到任何两根弦都不能交叉,否则就无法弹奏竖琴(如果连接两根琴弦的线段相交,那么这两根琴弦就叫做交叉)。为了修复竖琴,Emuskald 可以进行两种操作: 1. 挑选两个不同的列,在竖琴的两侧交换它们的引脚,但不改变连接每根琴弦的引脚。 2. 挑选两个不同的行,在竖琴的两侧交换它们的引脚,但不改变连接每根琴弦的引脚。 在下面的例子中,他可以通过交换两个列来固定竖琴: ![图片地址:https://espresso.codeforces.com/d291af53b444c8e00b38a0c12f3a9ebe43ad409a.png](https://espresso.codeforces.com/d291af53b444c8e00b38a0c12f3a9ebe43ad409a.png) 帮助 Emuskald 完成他的创作,找到需要重新排列竖琴的行和列的排列方式,或者告诉他不可能这样做。他可以将每根琴弦拆下并重新固定到琴弦上,因此琴弦的物理布局并不重要。

输入格式

第一行输入包含两个空格分隔的正整数 $n$ 和 $m$,即竖琴的高度和宽度。 下面 $n+m$ 行,每行包含 $4$ 个空格分隔的标记,描述一个字符串:两个符号 $a_i,b_i$ 和两个整数 $p_i,q_i$。 数对 $(a_i,p_i)$ 描述了字符串的第一个引脚,数对 $(bi,qi)$ 描述了字符串的第二个引脚。 数对 $(s,x)$ 以如下方式描述单个引脚的位置: - $s$ 等于符号 `L`、`T`、`R` 或 `B`,这表示销钉的位置在竖琴的左侧、上侧、右侧或下侧。 - $x$ 等于行的编号(如果销钉位于竖琴的左侧或右侧边框上),等于列的编号(如果销钉位于竖琴的上侧或下侧边框上)。 输入数据保证不会有两根不同的琴弦连接到同一个弦销。

输出格式

如果可以重新排列行和列来固定竖琴,那么: - 在第一行输出 $n$ 个以单个空格分隔的正整数:修理竖琴中从上到下排列的行数。 - 在第二行输出 $m$ 个以单个空格分隔的正整数:修理竖琴中从左到右排列的列数。 如果无法通过重新排列行列来固定竖琴,则输出 `No solution`。

说明/提示

$1\le n\le10^5,1\le m\le10^5$。