{"raw_statement":[{"iden":"background","content":"如何输入输出 `__int128`：\n\n```cpp\n__int128 read() {\n  char c = getchar();\n  __int128 x = 0;\n  bool f = 0;\n  for (; !isdigit(c); c = getchar()) f ^= !(c ^ 45);\n  for (; isdigit(c); c = getchar()) x = (x << 1) + (x << 3) + (c ^ 48);\n  if (f) x = -x;\n  return x;\n}\nvoid write(__int128 x, char c = '\\0') {\n  if (x < 0) putchar('-'), x = -x;\n  if (x > 9) write(x / 10);\n  putchar(x % 10 + '0');\n  if (c != '\\0') putchar(c);\n}\n```"},{"iden":"statement","content":"**本题已新增一组样例，请注意查看。**\n\n小 Y 给了你长度为 $n$ 的数组 $y$ 以及一个正整数 $m$，保证 $0\\le y_i<m$，请你构造一个同样长为 $n$ 的数组 $x$，使得：\n\n1. $x_i$ 在 `__int128` 范围内；\n2. $x_i\\bmod m=y_i$；\n3. $\\gcd(|x_1|,\\cdots,|x_n|)\\bmod m$ 最大。\n\n注意，$x_i$ **可以为负**，此时 $m\\mid (x_i-y_i)$ 且 $0\\le y_i<m$。 "},{"iden":"input","content":"第一行两个正整数 $n,m$。\n\n接下来一行 $n$ 个非负整数，代表 $x_i \\bmod m$ 的值。"},{"iden":"output","content":"第一行一个非负整数 $g$，代表 $\\gcd(|x_1|,|x_2|,\\cdots,|x_n|)\\mod m$ 的可能最大值。\n\n接下来一行 $n$ 个整数，代表 $x_i$。"},{"iden":"note","content":"**数据范围**\n\n**本题采用捆绑测试。**\n\nSubtask 1（$30$ pts）：$m$ 是素数。\n\nSubtask 2（$70$ pts）：无特殊限制。\n\n对于所有数据，保证 $2\\le m \\le10^9$，$1\\le n\\le10^6$。\n\n**关于 Special Judge**\n\n对于每个测试点：\n\n如果你输出的格式不正确，你将会获得 $0$ 分。\n\n如果你输出的数中有不在 `__int128` 范围的数，可能导致溢出所以你可能无法获得预期的分数。\n\n如果你的数列 $x$ 不符合题目给定的 $y$，你将会获得 $0$ 分。\n\n如果你的数列 $x$ 不符合你输出的 $g$，你将会获得 $0$ 分。\n\n如果你的 $g$ 不为最大，你将会获得 $0$ 分。\n\n否则你将获得该测试点的所有分数。"}],"translated_statement":null,"sample_group":[["1 10\n4","6\n-6"],["1 10\n7","7\n7"],["2 9\n3 3","6\n12 -6"],["10 7\n1 2 3 4 5 6 0 1 2 3","6\n36 30 24 18 12 6 42 -6 30 24"]],"show_order":[],"formal_statement":null,"simple_statement":null,"has_page_source":false}