#agc044f. [agc044_f]Name-Preserving Clubs
[agc044_f]Name-Preserving Clubs
問題文
人の (名前の異なる) 人がおり、 個のクラブがあります。あなたは、各クラブの会員をすべて知っています (形式的に言えば、 個の無順序リストを持っています)。それぞれの人は複数のクラブの会員である可能性も、どのクラブの会員でもない可能性もあります。複数のクラブの会員の集合が全く同じである可能性もあります。 ここで、 の値は、次の条件を満たす会員構成が少なくとも一通り存在するような最小の値となっています。
- 人全員が (全員の名前が異なるという条件を守りながら) 改名して、 個のクラブの改名後の会員リストがあなたに与えられた (ただし、どの会員リストがどのクラブのものかは知らされない) とする。このとき、あなたは確実に、改名後の 個の名前すべてについてその名前の人の元の名前を当てることができる。
このような 個のクラブの会員構成が何種類存在するか求めてください。ただし、 種類を超える場合はその旨を報告してください。 ここで、 種類の会員構成は、一方において 人の人が適切に改名することでもう一方が得られるなら同一とみなします。
厳密な問題文: クラブとは、 の部分集合 (空である可能性もある) である。( 人の人に番号 が付けられているとすると、この集合の要素がクラブの会員に対応する。) 会員構成とは、 個のクラブ (異なるとは限らない) からなる多重集合である。 の順列 と会員構成 に対し、 で会員構成 $\\{\\sigma(C_1), \\sigma(C_2), \\dots, \\sigma(C_K)\\}$ を表す ( がクラブであるとき、 である)。 会員構成 は、任意の異なる順列 に対して を満たすとき、name-preserving であるという。
name-preserving であってクラブ数 が最小であるような会員構成の個数を求めよ。ある順列 が存在して が成立するような つの会員構成 は同一とみなす。このような会員構成の個数が を超える場合は を出力せよ。
制約
入力
入力は標準入力から以下の形式で与えられる。
出力
問題文で述べたような会員構成が 種類存在するとして、以下の形式で標準出力に出力せよ。
ただし、このような会員構成の数が 種類より多い場合は を出力せよ。
入力例 1
2
出力例 1
1
の値は で、name-preserving であるような唯一の会員構成は です ( はこれと同一とみなされます)。
入力例 2
3
出力例 2
1
の値は で、name-preserving であるような唯一の会員構成は です (置換により一致する会員構成を同一視すると、これのみです)。
入力例 3
4
出力例 3
7
の値は で、name-preserving であるような クラブの会員構成は以下の通りです。
- \\{\\{1, 2\\}, \\{1, 3\\}, \\{1, 2, 4\\}
入力例 4
13
出力例 4
6
入力例 5
26
出力例 5
-1
入力例 6
123456789123456789
出力例 6
-1