Baitek Bajtocki 是一位才华横溢的年轻程序员。他的父母知道他能力出众,经常在电脑相关的问题上向他求助。
这一次,Bajtocki 先生和夫人决定在 Bajtocki Bit Bank(BBB)开设一个带有网银功能的账户。为此,他们两人都必须为账户设置密码。Baitek 的母亲在银行听说,最安全的密码是由计算机生成的。由于不知道如何做到这一点,父母便请 Baitek 帮忙。
BBB 的网站要求每个密码至少包含五个字符。允许使用的字符包括大小写字母、数字以及一些标点符号——更准确地说,是所有 ASCII 码在 48 到 122 之间的字符。为了让父母登录时不至于太麻烦,Baitek 决定为他们两人都生成恰好五个字符的密码。
Baitek 很容易地启动了一个伪随机数生成器,并生成了若干可能的密码。现在他正在考虑把哪个密码分配给母亲、哪个分配给父亲。他检查后发现,出于安全原因,银行服务要求不同账户持有人的密码必须不同。Baitek 决定进一步给父母留下深刻印象,给他们提供一对非常不同的密码,即在每一个位置上的字符都不同的密码。
为了让密码更容易记住,Baitek 希望母亲的密码像 Bajtocki 家某只猫的名字,而父亲的密码像他们家狗的名字。最终选择由 Baitek 自己决定,但在那之前,他希望得到他所生成的密码列表中所有非常不同的密码对。请编写程序生成这样的列表。
输入格式
输入第一行包含一个整数 $n$($2 \le n \le 50{,}000$),表示 Baitek 生成的密码数量。接下来 $n$ 行每行包含 5 个字符,这些字符的 ASCII 码都在 48 到 122 之间。你不应假设给定的密码具有任何随机性。
输出格式
输出第一行应包含一个非负整数 $m$,表示无序的、非常不同的密码对数量。接下来 $m$ 行每行输出两个整数:一对非常不同的密码的下标。密码按输入顺序从 1 到 $n$ 编号。
如果输入密码中非常不同的密码对超过 100,000 对,则输出任意 100,000 对(并令 $m$ 输出为 100,000)。
样例数据
对于输入:
3 aB;Va xBx@a zc:ng
一种正确输出为:
2 1 3 2 3