atcoder#AGC057F. [AGC057F] Reflection
[AGC057F] Reflection
配点 : 点
問題文
互いに区別のできない つの石が、数直線上の座標が整数の点に置かれています。これらの石に対して次の操作を考えます:
- つの石を、その時点で座標の小さい方から順に(同じ位置にある石については適当な順に) とする。次のいずれかを行う。- を に関して対称な位置に移動する。
- を に関して対称な位置に移動する。
- を に関して対称な位置に移動する。
- を に関して対称な位置に移動する。
はじめに つの石が置かれている座標 が与えられます。操作を何度でも行える( 回でもよい)とき、操作結果の つの石の座標の組合せとしてありうるものの個数を で割った余りを求めてください。
石が互いに区別できないことに注意してください。より厳密にいえば、 つの石の座標の組合せを多重集合として数え上げてください。
個のテストケースが与えられるので、それぞれについて答えを求めてください。
制約
入力
入力は以下の形式で標準入力から与えられます。
各テストケースは以下の形式で与えられます。
出力
行出力してください。 行目には、 に対する答えを出力してください。
6
1 3 5
-2 -2 5
0 1 3
31 41 59
-123456789 0 987654321
-1000000000000000000 0 1000000000000000000
5
2
9
70
182333351
5
である場合、操作結果の つの石の座標の組合せとしてありうるのは次の 通りです:
- , , , ,
次の図も参考にしてください。