Руки вверх! Ваша песенка спета!

У задачи есть несколько решений, но в любом случае надо предпосчитать значения функции Эйлера при помощи решета Эратосфена, а также найти ближайший справа больший элемент с помощью стека (это элемент назовём родителем числа). Одно из решений выглядит так:

Как известно, для простого числа $$$p$$$ значение функции Эйлера $$$\varphi(p) = p-1$$$. Для $$$1 \lt x \lt p$$$ верно $$$\varphi(x) \lt x \le p - 1 = \varphi(p)$$$. Тогда для $$$p \gt 2$$$ $$$\varphi(p)$$$ является префиксным рекордом, то есть из любого старта мы в какой-то момент попадём в это простое число.

Построим дерево, где корнем является первое простое число, большее $$$10^6$$$, а из остальных вершин проведено ребро в их родителя. Посчитаем глубины вершин, обозначим их за $$$dep_v$$$.

Теперь научимся отвечать на запросы. Обозначим за $$$p$$$ максимальное простое, не превосходящее $$$r$$$. Если $$$l \le p$$$, рассмотрим, какую максимальную длину последовательности можно набрать, стартуя из $$$s \le p$$$. До числа $$$p$$$ мы сделаем $$$dep_s - dep_p$$$ прыжков, а затем из $$$p$$$ будем прыгать, пока не зайдём за $$$r$$$. Следовательно нам надо выбрать $$$s$$$ с максимальным $$$dep$$$, то есть максимум по $$$dep$$$ на отрезке $$$[l, p]$$$, что можно сделать деревом отрезков. На самом деле прыжков из $$$p$$$ больше не будет, но замечать это не требовалось, поскольку количество прыжков из $$$p$$$ можно оценить как максимальное расстояние между соседними простыми до $$$10^6$$$, которое не больше $$$120$$$.

И этот факт нам потребуется, чтобы обработать интервал $$$[max(l, p), r]$$$. На нем можно просто посчитать динамику $$$dp_v = $$$ количество прыжков из $$$v$$$ до последнего числа, не заходящего до $$$r$$$. Такая динамика легко считается в порядке убывания за $$$O(r - max(l, p))$$$ что не больше чем $$$120$$$.

Итого за $$$120 + O(\log A)$$$ мы умеем отвечать на запрос, а на предподсчет мы тратим $$$O(A)$$$ времени и памяти, где $$$A = 10^6$$$.