{"problem":{"name":"[NICA #3] 星空（Hard Version）","description":{"content":"小 R 有一个长度为 $n$ 的序列 $a$，保证序列中的每个数都是 $2$ 的整数次幂。 小 M 有一个数 $x$，她希望重新排列序列 $a$，使得不存在一个 $i\\in[1,n)$ 满足 $a_i+a_{i+1}>x$。重排的方式为：选择一个 $1\\sim n$ 的排列 $p$，然后令新序列 $a'$ 满足 $a'_i=a_{p_i}$。$a'$ 即为重排后的序列。 现在你想要知道有多少种","description_type":"Markdown"},"platform":"Luogu","limit":{"time_limit":1000,"memory_limit":524288},"difficulty":{"LuoguStyle":"P5"},"is_remote":true,"is_sync":true,"sync_url":null,"sign":"LGB3903"},"statements":[{"statement_type":"Markdown","content":"小 R 有一个长度为 $n$ 的序列 $a$，保证序列中的每个数都是 $2$ 的整数次幂。\n\n小 M 有一个数 $x$，她希望重新排列序列 $a$，使得不存在一个 $i\\in[1,n)$ 满足 $a_i+a_{i+1}>x$。重排的方式为：选择一个 $1\\sim n$ 的排列 $p$，然后令新序列 $a'$ 满足 $a'_i=a_{p_i}$。$a'$ 即为重排后的序列。\n\n现在你想要知道有多少种重排的方式能满足小 M 的要求。两种重排方式不同当且仅当选择的排列 $p$ 不同。\n\n## Input\n\n第一行输入两个正整数 $n,x$，表示序列长度和小 M 想的那个数；\n\n第二行输入 $n$ 个正整数 $a_i$，表示序列；\n\n## Output\n\n输出一行表示答案。答案对 $10^9+7$ 取模。\n\n[samples]\n\n## Background\n\n**Easy Version 和 Hard Version 差别在于数据范围。**\n\n## Note\n\n数据保证，$2 \\leq n \\leq 10^5$，$1 \\leq a_i \\leq 2^{60}$，$1 \\leq x < 2^{63}$。","is_translate":false,"language":"English"}],"meta":{"iden":"LGB3903","tags":["O2优化","排列组合","逆元"],"sample_group":[["6 46\n4 8 8 16 32 32","144"]],"created_at":"2026-03-03 11:09:25"}}