eolymp
bolt
Try our new interface for solving problems
Məsələlər

Уравнение в перестановках

Уравнение в перестановках

Пусть \textbf{n} - фиксированное натуральное число. Давайте построим довольно необычное отображение \textbf{f} на множестве перестановок первых \textbf{n} натуральных чисел. Пусть \textbf{x=(x\[1\], x\[2\], ..., x\[n\])} - некоторая перестановка. Построим по ней перестановку \textbf{y=(y\[1\], y\[2\], ..., y\[n\])} следующим образом. Пусть \textbf{y\[1\]=1}, а при \textbf{i>1} если \textbf{z=x\[y\[i-1\]\]} не принадлежит множеству \textbf{Y_\{i-1\}=\{y\[1\], ..., y\[i-1\]\}}, то \textbf{y\[i\]=z}, иначе \textbf{y\[i\]} равно наименьшему натуральному числу, которое не принадлежит \textbf{Y_\{i-1\}}. Будем называть перестановку \textbf{y} образом перестановки \textbf{x} при отображении \textbf{f}, то есть \textbf{f(x)=y}. Итак, отображение построение. Обозначим через \textbf{g(y)} количество решений уравнения \textbf{f(x)=y}, то есть количество тех перестановок \textbf{x}, для которых \textbf{f(x)=y}. Теперь задача. Для заданных целых неотрицательных чисел \textbf{L} и \textbf{R} требуется найти количество таких перестановок \textbf{y}, что \textbf{L} ≤ \textbf{g(y)} ≤ \textbf{R}. Так как ответ может быть большим, то выведите его по модулю \textbf{10^9+9}. \InputFile В первой строке входного файла заданы через пробел натуральные числа \textbf{n} ≤ \textbf{10^5} и \textbf{T} ≤ \textbf{1000}, длина перестановки и количество пар \textbf{L}, \textbf{R}, которые необходимо обработать для данного \textbf{n}. В каждой из последующих \textbf{T} строк заданы через пробел целые неотрицательные числа \textbf{L}, \textbf{R} ≤ \textbf{10^18}. \OutputFile Для каждой пары \textbf{L}, \textbf{R} из входного файла выведите в отдельной строке остаток при делении на \textbf{10^9+9} количества таких перестановок \textbf{y} длины \textbf{n}, что \textbf{L} ≤ \textbf{g(y)} ≤ \textbf{R}.
Zaman məhdudiyyəti 1 saniyə
Yaddaşı istafadə məhdudiyyəti 256 MiB
Giriş verilənləri #1
3 5
0 0
2 2
4 4
0 5
2 1
Çıxış verilənləri #1
4
1
1
6
0