Задачі
Мінімальне покриття
Мінімальне покриття
Серед заданої множини відрізків прямої з цілочисельними координатами кінців \[\textbf{L_i}, \textbf{R_i}\] необхідно вибрати підмножину найменшої потужності, яка повністю покриває відрізок \[\textbf{0}, \textbf{M}\], де \textbf{M} -- ціле додатне число.
\InputFile
У першому рядку записано ціле число \textbf{M} (\textbf{1} ≤ \textbf{M} ≤ \textbf{5000}). У наступних рядках перераховані пари цілих чисел \textbf{L_i} та \textbf{R_i} (|\textbf{L_i}|, |\textbf{R_i}| ≤ \textbf{50000}), кожна пара з нового рядка, числа в парах авдокремлені одне від одного одним чи декількома пропусками. Список завершується парою нулів. Список містить не більше \textbf{100000} пар чисел, включаючи пару нулів.
\OutputFile
Програма повинна формувати у першому рядку потрібне мінимальне число відрізків із заданої множини, необхідне для покриття відрізка \[\textbf{0}, \textbf{M}\]. Далі повинен йти список покриваючої підмножини, упорядкований за зростанням координат лівих кінців відрізків. Список відрізків виводиться у тому ж форматі, що і на вході, завершуючу пару нулів виводити не потрібно.
Якщо покриття відрізка \[\textbf{0}, \textbf{M}\] заданою множиною відрізків \[\textbf{L_i}, \textbf{R_i}\] неможливо, то слід вивести єдину фразу "\textbf{No solution}".
Вхідні дані #1
1 -1 0 -5 -3 2 5 0 0
Вихідні дані #1
No solution