Випадкове дерево
Розгляньмо процес побудови дерева T.
Спочатку дерево складається лише з однієї вершини з номером 1.
Потім у дерево додаються вершини з номерами від 2 до n.
На i-му кроці додається вершина з номером i + 1 і ребро, що з'єднує її з однією з уже доданих вершин p (1 ≤ p ≤ i), яка вибирається випадково з рівною ймовірністю.
Нехай V - множина вже доданих у T вершин.
Визначимо f(A) як кількість вершин у T, які або належать A, або лежать на шляху між будь-якими двома вершинами з A (можливо, і там, і там).
Ваше завдання - після додавання кожної вершини вивести суму f(A) для всіх підмножин A множини V (Σ f(A) для всіх A ⊂ V). Оскільки результати можуть бути дуже великими, виводьте лише залишки від ділення на 998244353.
Вхідні дані
Перший рядок містить одне число n (2 ≤ n ≤ 200000) - кількість вершин у дереві після завершення процесу.
У наступному рядку наведено n - 1 ціле число p[1]
, p[2]
, ..., p[n]
(1 ≤ p[i]
≤ i), що вказують на додавання вершини i + 1 і ребра між p[i]
та i + 1. Гарантується, що p[i]
вибрано випадково з рівною ймовірністю серед чисел від 1 до i.
Вихідні дані
Виведіть n - 1 ціле число - залишки від ділення (Σ f(A) для всіх A ⊂ V) на 998244353 після додавання кожної вершини.