Вам дано корневое дерево, вершины которого пронумерованы от \(1\) до \(n\). Дерево — это связный граф без циклов. В корневом дереве есть выделенная вершина, называющаяся корнем.
Предками вершины \(i\) называются все вершины, лежащие на пути от корня до вершины \(i\), кроме самой вершины \(i\). Родителем вершины \(i\) называется ближайший к \(i\) предок \(i\). В данном вам дереве родитель вершины \(i\) имеет номер \(p_i\). Для корня величина \(p_i\) равна \(-1\).
Пример возможного дерева для \(n=8\), корнем является вершина \(5\). Родителем вершины \(2\) является вершина \(3\), а родителем вершины \(1\) является вершина \(5\). Предками вершины \(6\) являются вершины \(4\) и \(5\), а предками вершины \(7\) являются вершины \(8\), \(3\) и \(5\) Вы заметили, что некоторые вершины не уважают других. А именно, если \(c_i = 1\), то вершина \(i\) не уважает каждого из своих предков, а если \(c_i = 0\), то она их уважает.
Вы решили по очереди удалять из дерева вершины: на каждом шаге вы выбираете не корневую вершину, которая не уважает своего родителя, и которую не уважают все вершины, для которых она является родителем. Если таких вершин несколько, то вы выбираете вершину с минимальным номером. При удалении вершины \(v\) все вершины, для которых \(v\) была родителем, соединяются ребром с родителем \(v\).
Пример удаления вершины \(7\). Как только подходящих вершин для удаления нет, вы заканчиваете процесс. Выведите порядок, в котором вы удалите вершины. Обратите внимание, что этот порядок задается однозначно.
Выходные данные
В случае, если вы удалите хотя бы одну вершину, в единственной строке через пробел выведите номера всех удаленных вершин в том порядке, в котором вы их удалите. В случае, если никого не нужно удалять, выведите единственное число \(-1\).
Примечание
Процесс удаления в первом примере будет происходить по следующему сценарию (см. картинку ниже, вершины с \(c_i=1\) отмечены жёлтым):
- сначала будет удалена вершина \(1\), так как она не уважает предков и все вершины, для которых она родитель (это одна вершина \(2\)) ее не уважают, а среди таких вершина номер \(1\) — наименьший номер;
- вершина \(2\) при этом будет соединена ребром с вершиной \(3\);
- затем будет удалена вершина \(2\), так как она не уважает предков, и все вершины, для которых она родитель (это одна вершина \(4\)) ее не уважают;
- при этом вершина \(4\) будет соединена ребром с вершиной \(3\);
- затем будет удалена вершина \(4\), так как она не уважает предков, и все вершины, для которых она родитель (таких нет) ее не уважают (vacuous truth);
- из дерева будет удалена вершина \(4\);
- процесс удаления завершается, так как нет подходящих вершин.
Во втором примере вершины не нужно удалять:
- у \(2\) и \(3\) есть вершины, для которых они являются родителями, но которые их уважают;
- \(4\) и \(5\) уважают руководство.
В третьем примере дерево будет меняться следующим образом: