EduBrick

M. С какого яблока ронять

3000 мс · 256 МБ · всё или ничего

Как классная задача M, но падать начинает не обязательно первое яблоко. Для каждого яблока выведите, сколько всего яблок упадёт, если оторвётся именно оно.

Граф строится ровно тот же, и условие «падающее aa заденет bb» то же самое. Меняется только то, что обход запускается из каждой вершины.

При n≤200n \le 200 это O(n3)O(n^3) в худшем случае — совершенно посильно. Строить граф заново на каждый запуск не нужно: постройте один раз, а обходы делайте по нему.

Формат ввода

Первая строка содержит число nn (1≤n≤2001 \le n \le 200).

Далее идут nn строк по четыре целых числа xix_i, yiy_i, ziz_i, rir_i (−104≤xi,yi,zi≤104-10^4 \le x_i, y_i, z_i \le 10^4, 1≤ri≤1041 \le r_i \le 10^4). Координаты — самой верхней точки яблока.

Формат вывода

Одна строка из nn чисел.

Примеры

ввод
4
0 0 10 4
5 0 3 1
-7 4 7 1
0 1 2 6
вывод
3 2 1 1
ввод
2
0 0 0 1
0 0 100 1
вывод
1 2
Войдите, чтобы отправлять решения.