Это более сложная версия задачи Counting Cactus с 300iq Contest 2.
На NEERC предлагалось несколько задач про кактусы: связные неориентированные графы, в которых каждое ребро принадлежит не более чем одному простому циклу. Интуитивно, кактус — это обобщение дерева, в котором разрешены некоторые циклы. Пример кактуса из задачи NEERC 2007 приведен на рисунке ниже.
У Dreamoon есть неориентированный граф. Теперь он хочет узнать, сколько подграфов (подмножеств ребер) его графа являются кактусами? Помогите ему найти это значение по модулю $998\,244\,353$.
Входные данные
Первая строка содержит два целых числа $n$ и $m$: количество вершин и ребер в графе Dreamoon ($1 \le n \leq {\color{red}{\mathbf{18}}}$, $0 \leq m \leq \frac{n(n-1)}{2}$).
Следующие $m$ строк описывают ребра графа. $i$-я из этих строк содержит два целых числа $a_i$ и $b_i$ ($1 \le a_i, b_i \le n$, $a_i \neq b_i$), обозначающих ребро между вершинами $a_i$ и $b_i$. Гарантируется, что кратных ребер нет.
Выходные данные
Выведите одно целое число: количество подграфов-кактусов графа Dreamoon по модулю $998\,244\,353$.
Примеры
Входные данные 1
3 3 1 2 2 3 3 1
Выходные данные 1
4
Входные данные 2
5 0
Выходные данные 2
0
Входные данные 3
8 9 1 5 1 8 2 4 2 8 3 4 3 6 4 7 5 7 6 8
Выходные данные 3
35
Примечание
- $1\le n\le {\color{red}{\mathbf{18}}}$
- $0\le m\le \frac{n(n-1)}2$
- $u\neq v, 1\le u, v\le n$; кратных ребер нет.
Подзадачи:
- ($16$ баллов) $n\le 5$
- ($20$ баллов) $n\le 7$
- ($14$ баллов) $n\le 10$
- ($20$ баллов) $n\le 13$
- ($10$ баллов) $n\le 16$
- ($20$ баллов) Без дополнительных ограничений