Это сложная версия задачи. В этой версии ограничения на $$$n$$$ и на сумму $$$n$$$ по всем наборам входных данных равны $$$2 \cdot 10^5$$$, а количество наборов входных данных не превышает $$$10^4$$$.
Была перестановка $$$p$$$ размера $$$n$$$$$$^{\text{∗}}$$$.
Её отправили по каналу связи следующим образом: сначала отправили все $$$0$$$-е по счёту биты каждого числа $$$p_{i}$$$ в перестановке в виде строки из $$$n$$$ символов 0 и/или 1, потом отправили $$$1$$$-е по счёту биты в таком же формате и так далее до самого старшего бита числа $$$n$$$.
Например, для $$$p = [3, 1, 2, 4]$$$ были бы отправлены следующие три строки:
Вы получили все эти строки, однако порядок, в котором какая строка за какой бит отвечает, был потерян, то есть строки пришли в произвольном порядке. Для примера выше строки могли прийти в порядке «1010», «0001» и «1100».
Ваша задача — сказать, сколько вариантов изначальной перестановки $$$p$$$ могло быть передано. Возможно, что данные в процессе повредились, и не существует ни одного варианта изначальной перестановки $$$p$$$.
$$$^{\text{∗}}$$$Перестановка размера $$$n$$$ — массив размера $$$n$$$, в котором каждое целое число от $$$1$$$ до $$$n$$$ встречается ровно по одному разу.
Каждый тест состоит из нескольких наборов входных данных. В первой строке находится одно целое число $$$t$$$ ($$$1 \le t \le 10^4$$$) — количество наборов входных данных. Далее следует описание наборов входных данных.
В первой строке каждого набора входных данных содержится одно целое число $$$n$$$ ($$$1 \le n \le 2 \cdot 10^5$$$).
В следующих $$$\lceil\log_2 (n + 1) \rceil$$$ строках каждого набора содержатся переданные данные в полученном порядке. Каждая строка состоит из $$$n$$$ символов $$$0$$$ и/или $$$1$$$.
Дополнительные ограничения на входные данные:
Для каждого набора входных данных выведите одно целое число — ответ на задачу.
61141010000101107010101111001010110110510110011001100160010111110000000007110000111000011100011
126000
В первом примере могла быть только одна перестановка $$$p = [1]$$$.
Во втором примере возможны $$$2$$$ варианта: $$$[1, 2, 3, 4]$$$ и $$$[2, 1, 3, 4]$$$.
В четвёртом примере нет подходящих изначальных перестановок.
| Название |
|---|


