假设有一群人,他们拥有想要交易的物品,同时也想要得到其他物品:
| 姓名 | 拥有 | 想要 |
|---|---|---|
| Sally | Clock | Doll |
| Steve | Doll | Painting |
| Carlos | Painting | Clock |
| Maria | Candlestick | Vase |
请注意,上述列表中没有任何两个人可以直接配对交易。然而,如果 Sally、Steve 和 Carlos 聚在一起,Sally 可以用她的 Clock 换取她想要的 Doll,然后 Steve 可以用那个 Clock 换取他想要的 Painting。
这种通过一系列个人交易,使尽可能多的人获得他们想要物品的过程被称为“数学交易”(math trade)。理想情况下,每个人都参与到数学交易中,但这并不总是可能的(抱歉了 Maria)。因此,目标是创建一个长度最长的单一交易链。如果参与者有多个想要交易或获取的物品,确定最长的数学交易会变得很复杂。幸运的是,我们只需要处理每个人恰好拥有并想要一件物品,且没有任何物品被多于一人拥有或被多于一人想要的情况。
输入格式
输入的第一行包含一个正整数 $n$ ($n \le 100$),表示参与交易的人数。接下来有 $n$ 行,每行包含三个由空格分隔的字符串。第一个字符串是交易者的姓名。第二个字符串是交易者拥有的物品。第三个字符串是交易者想要的物品。所有交易者的姓名都是唯一的,且没有任何物品会被多于一人想要或被多于一人拥有。
输出格式
输出最长数学交易的长度。如果无法进行任何交易,则输出短语 “No trades possible”。
样例
样例输入 1
4 Sally Clock Doll Steve Doll Painting Carlos Painting Clock Maria Candlestick Vase
样例输出 1
3
样例输入 2
4 Abby Bottlecap Card Bob Card Spoon Chris Spoon Chair Dan Pencil Pen
样例输出 2
No trades possible