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

Пусть T — произвольное бинарное дерево, т.е. дерево, у каждой вершины которого не больше двух сыновей. Данное дерево является корневым, т.е существует единственная вершина, у которой нет родителя — корень дерева. В вершинах данного дерева записаны целые числа. Каждое число, которое есть в дереве T попытаются найти следующим алгоритмом:

  1. Поставить указатель на корень дерева
  2. Сообщить, что число найдено, если значение, записанное в текущей вершине, равно искомому числу
  3. Перейти в левого сына вершины, если значение, записанное в текущей вершине, больше искомого числа
  4. Перейти в правого сына вершины, если значение, записанное в текущей вершине, меньше искомого числа
  5. Сообщить, что число не найдено, если вершина, в которую надо перейти, не существует

Ниже приведен псевдокод описанного алгоритма:


bool find(TreeNode t, int x) {
if (t == null)
return false;
if (t.value == x)
return true;
if (x < t.value)
return find(t.left, x);
else
return find(t.right, x);
}
find(root, x);

Данный алгоритм работает корректно, если поиск осуществляется в бинарном дереве поиска (то есть таком дереве, где для каждого узла значение в нем больше значений в его левом поддереве и меньше значений в правом поддереве). На произвольном дереве этот алгоритм, разумеется, может вернуть неправильный результат.

Так как заданное дерево не является в общем случае бинарным деревом поиска, то не все числа возможно найти таким способом. Ваша задача — посчитать, сколько раз найти число не удастся, если алгоритм запущен для всех возможных значений, которые содержатся в дереве.

Если в дереве есть несколько вершин с одинаковыми числами на них, то алгоритм следует запустить для каждой из них отдельно.

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

В первой строке записано целое число n (1 ≤ n ≤ 105) — количество вершин в дереве.

В следующих n строках заданы по 3 числа v, l, r (0 ≤ v ≤ 109) — число, записанное в вершине, индекс левого сына вершины и индекс правого сына вершины, соответственно. Если какого-либо из сыновей не существует, то записано число  - 1. Обратите внимание, что в различных вершинах дерева могут быть записаны одинаковые значения.

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

Выведите количество чисел, которые не будут найдены описанным алгоритмом.

Примеры
Входные данные
3
15 -1 -1
10 1 3
5 -1 -1
Выходные данные
2
Входные данные
8
6 2 3
3 4 5
12 6 7
1 -1 8
4 -1 -1
5 -1 -1
14 -1 -1
2 -1 -1
Выходные данные
1
Примечание

В первом примере корнем дерева является вершина 2. Поиск чисел 5 и 15 завершится неудачей, так как на первом шаге будут совершены переходы в поддеревья, в которых нет искомых чисел.