Случайное дерево
시간 제한2초메모리 제한1024 MB
무작위로 만들어지는 트리에 정점이 하나씩 추가될 때마다, 아직 추가된 정점들의 모든 부분집합에 대해 그 부분집합을 포함하는 최소 연결 부분트리의 정점 수 합을 998244353으로 나눈 나머지를 구합니다.
문제
Рассмотрим следующий процесс построения дерева .
Изначально дерево состоит из одной вершины, которая имеет номер .
Дальше в дерево добавляются вершины с номерами .
На -м шаге в дерево добавляется вершина с номером , также в дерево добавляется ребро из нее в некоторую уже добавленную вершину (), которая выбирается среди них случайно равновероятно.
Пусть --- множество уже добавленных в вершин.
Тогда пусть --- количество вершин , что они лежат или в , или на пути между какими-либо двумя вершинами из (возможно, и там, и там).
Ваша задача после добавления каждой вершины вывести сумму по всем множествам , которые являются подмножествами множества уже добавленных в вершин ( по всем ). Так как ответы могут быть очень большим, выводите лишь остатки от деления ответа на .
입력
Первая строка входного файла содержит одно число --- количество вершин в дереве после последнего шага .
В следующей строке расположено целое число (), обозначающих добавления в граф вершины и ребра между и соответственно. Гарантируется, что выбрано случайно равновероятно среди чисел от до .
출력
Выведите целое число, остатки от деления ( по всем ) на после добавления каждой вершины.
힌트
Итоговые деревья из примеров:

