Дана дерево с $n$ вершинами. Каждая вершина с вероятностью $50\%$ является чёрной и с вероятностью $50\%$ — белой.
Дано целое положительное число $m$. Случайным образом выбирается подмножество рёбер (каждое ребро выбирается с вероятностью $50\%$). Пусть $x$ — количество выбранных рёбер. Если для каждого выбранного ребра количество чёрных вершин в двух компонентах связности, образованных удалением этого ребра, различно, то вы получаете $m^x$ очков, иначе — $0$ очков.
Найдите математическое ожидание полученных очков.
В задаче несколько наборов входных данных.
Входные данные
Первая строка содержит целое положительное число $t$ — количество наборов входных данных.
Первая строка каждого набора содержит два целых положительных числа $n$ и $m$. Следующие $n-1$ строк содержат по два целых положительных числа $u$ и $v$, описывающих ребро дерева.
Выходные данные
Для каждого набора данных выведите одно целое число — значение математического ожидания, умноженное на $2^{2n-1}$, по модулю $998244353$.
Подзадачи
Для 10% данных: $n \leq 10$.
Для 20% данных: $n \leq 20$.
Для 30% данных: $n \leq 200$.
Для 40% данных: $n \leq 1000$.
Для 50% данных: $n \leq 3000$.
Для 60% данных: $n \leq 10000$.
Для 70% данных: $n \leq 15000$.
Для 100% данных: $t \leq 5$, $2 \leq n \leq 20000$, $\sum n \leq 70000$, $1 \leq m < 998244353$, $1 \leq u, v \leq n$.
Примеры
Входные данные 1
2 3 5 1 2 2 3 10 23333333 3 1 4 2 6 7 8 6 2 5 3 6 10 1 9 7 1 2
Выходные данные 1
158 167850015