Вадим работает в научно-исследовательском отделении большой IT-компании. Программировать ему приходится нечасто, а вот изучать самое простое понятие в математике — натуральные числа — приходится каждый день. Как только он не соединял между собой натуральные числа! Вот и сегодня он решил соединить их по-своему.
Два различных числа a, b соединены, если либо a — наибольший не равный b делитель b, либо b — наибольший не равный a делитель a.
Назовём путём последовательность различных натуральных чисел [a1, a2, … , ak] такую, что для всех i из [1, k−1] ai и ai+1 соединены и k ≥ 1.
Назовём ценой пути минимальное значение ai в последовательности.
Теперь Вадиму стало интересно про некоторые пары чисел, существует ли между ними путь и, если он есть, то какой наибольшей цены он может быть.
Исходные данные
В первой строке дано единственное число N — количество пар чисел, про которые хочет узнать Вадим (1 ≤ N ≤
5 · 105).
В каждой из следующих N строк через пробел даны по два числа ai, bi — очередная пара чисел, про которую хочет узнать Вадим (1 ≤ ai, bi ≤ 107).
Результат
Выведите N строк. В i-й строке выведите −1, если пути между ai и bi нет, иначе выведите единственное целое число — наибольшую цену пути между ai и bi.
Пример
| исходные данные | результат |
|---|
3
4 4
4 5
4 6
| 4
1
1
|
Автор задачи: Вадим Баринов
Источник задачи: Вузовско-академическая олимпиада по информатике 2022