eolymp
Задачи

Разреженные таблицы

Разреженные таблицы

Лимит времени 2 секунды
Лимит использования памяти 128 MiB

Дан массив из n чисел. Требуется написать программу, которая будет отвечать на запросы следующего вида: найти минимум на отрезке между u и v включительно.

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

В первой строке заданы три натуральных числа n, m (1n10^5, m10^7) и a[1] (1a[1] < 16714589) - количество элементов в массиве, количество запросов и первый элемент массива соответственно. Вторая строка содержит два натуральных числа u[1] и v[1] (1u[1], v[1]n) - первый запрос.

Элементы a[2], a[3], ..., a[n] заданы следующей формулой:

a[i+1]= (23 * a[i] + 21563) mod 16714589

Например, при n = 10, a[1] = 12345 получается следующий массив:

a = (12345, 305498, 7048017, 11694653, 1565158, 2591019, 9471233, 570265, 13137658, 1325095)

Запросы генерируются следующим образом:

u[i+1]= ((17 * u[i] + 751 + ans[i] + 2i) mod n) + 1

v[i+1]= ((13 * v[i] + 593 + ans[i] + 5i) mod n) + 1

где ans[i] - ответ на запрос номер i.

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

Вывести u[m], v[m] и ans[m] (последний запрос и ответ на него).

Пример

Входные данные #1
10 8 12345
3 9
Выходные данные #1
5 3 1565158
Автор В.Гольдштейн
Источник 2010 Зимние сборы в Харькове, День 2