D. Частичные виртуальные деревья
ограничение по времени на тест
2 секунды
ограничение по памяти на тест
256 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

Каваширо Нитори — девушка, которой нравится спортивное программирование. Однажды она нашла корневое дерево из $$$n$$$ вершин. Корень дерева был в вершине с номером $$$1$$$. Как продвинутый автор, она сразу придумала задачу.

У Каваширо Нитори есть множество вершин $$$U=\{1,2,\ldots,n\}$$$. За одну операцию она будет выбирать множество вершин $$$T$$$, где $$$T$$$ является частичным виртуальным деревом множества $$$U$$$, и заменять множество $$$U$$$ на $$$T$$$.

Множество вершин $$$S_1$$$ называется частичным виртуальным деревом множества вершин $$$S_2$$$, если $$$S_1$$$ — подмножество $$$S_2$$$, $$$S_1 \neq S_2$$$ и для любых пар вершин $$$i$$$ и $$$j$$$ из $$$S_1$$$ $$$\operatorname{LCA}(i,j)$$$ лежит внутри $$$S_1$$$, где $$$\operatorname{LCA}(x,y)$$$ обозначает наименьшего общего предка вершин $$$x$$$ и $$$y$$$ в дереве. Обратите внимание, что множество вершин может иметь много различных частичных виртуальных деревьев.

Каваширо Нитори хочет узнать для каждого возможного $$$k$$$, если применить операцию строго $$$k$$$ раз, сколькими способами она может получить $$$U=\{1\}$$$ в конце? Два способа считаются различными, если существует целое число $$$z$$$ ($$$1 \le z \le k$$$) такое, что после $$$z$$$ операций множества $$$U$$$ различаются.

Так как ответ может быть большим, найдите его по модулю $$$p$$$. Гарантируется, что $$$p$$$ — простое число.

Входные данные

Первая строка содержит два целых числа $$$n$$$ и $$$p$$$ ($$$2 \le n \le 2000$$$, $$$10^8 + 7 \le p \le 10^9+9$$$). Гарантируется, что $$$p$$$ — простое число.

Каждая из следующих $$$n-1$$$ строк содержит два целых числа $$$u_i$$$, $$$v_i$$$ ($$$1 \leq u_i, v_i \leq n$$$), обозначающих ребро между $$$u_i$$$ и $$$v_i$$$.

Гарантируется, что данные ребра образуют дерево.

Выходные данные

Выведите единственную строку, состоящую из $$$n-1$$$ целых чисел — ответ по модулю $$$p$$$ для всех $$$k=1,2,\ldots,n-1$$$.

Примеры
Входные данные
4 998244353
1 2
2 3
1 4
Выходные данные
1 6 6 
Входные данные
7 100000007
1 2
1 3
2 4
2 5
3 6
3 7
Выходные данные
1 47 340 854 880 320 
Входные данные
8 1000000007
1 2
2 3
3 4
4 5
5 6
6 7
7 8
Выходные данные
1 126 1806 8400 16800 15120 5040 
Примечание

В первом примере при $$$k=1$$$ единственный возможный способ следующий:

  1. $$$\{1,2,3,4\} \to \{1\}$$$.

При $$$k=2$$$ существуют $$$6$$$ способов:

  1. $$$\{1,2,3,4\} \to \{1,2\} \to \{1\}$$$;
  2. $$$\{1,2,3,4\} \to \{1,2,3\} \to \{1\}$$$;
  3. $$$\{1,2,3,4\} \to \{1,2,4\} \to \{1\}$$$;
  4. $$$\{1,2,3,4\} \to \{1,3\} \to \{1\}$$$;
  5. $$$\{1,2,3,4\} \to \{1,3,4\} \to \{1\}$$$;
  6. $$$\{1,2,3,4\} \to \{1,4\} \to \{1\}$$$.

При $$$k=3$$$ существуют $$$6$$$ возможных способов:

  1. $$$\{1,2,3,4\} \to \{1,2,3\} \to \{1,2\} \to \{1\}$$$;
  2. $$$\{1,2,3,4\} \to \{1,2,3\} \to \{1,3\} \to \{1\}$$$;
  3. $$$\{1,2,3,4\} \to \{1,2,4\} \to \{1,2\} \to \{1\}$$$;
  4. $$$\{1,2,3,4\} \to \{1,2,4\} \to \{1,4\} \to \{1\}$$$;
  5. $$$\{1,2,3,4\} \to \{1,3,4\} \to \{1,3\} \to \{1\}$$$;
  6. $$$\{1,2,3,4\} \to \{1,3,4\} \to \{1,4\} \to \{1\}$$$.