F. Ним
ограничение по времени на тест
6 секунд
ограничение по памяти на тест
512 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

Кратко напомним правила игры «Ним». Имеется $$$n$$$ кучек камней, при этом в кучке $$$i$$$ изначально лежит какое-то число камней. Два игрока по очереди выбирают непустую кучку и берут из нее произвольное положительное (строго больше $$$0$$$) количество камней. Проигрывает тот, кто не может сделать ход.

Дан массив $$$a$$$, состоящий из $$$n$$$ целых чисел. Артем и Руслан решили играть в Ним на подотрезках массива. Каждый из $$$q$$$ раундов определяется отрезком $$$(l_i, r_i)$$$, где элементы массива $$$a_{l_i}, a_{l_i+1}, \dots, a_{r_i}$$$ рассматриваются как размеры кучек камней.

До начала игры Руслан может удалить любое количество кучек из выбранного подотрезка. Однако хотя бы одна кучка должна остаться, поэтому в рамках одного раунда он может удалить не более $$$(r_i - l_i)$$$ кучек. Разрешается удалить $$$0$$$ кучек. После удаления ребята играют в Ним на всех оставшихся кучках из этого отрезка.

Все раунды независимы: удаления, произведенные в одном раунде, не влияют на исходный массив или другие раунды.

Руслану нужно удалить как можно больше кучек так, чтобы Артем, который будет ходить первым, проиграл.

Для каждого раунда определите:

  1. максимальное количество кучек, которые Руслан может удалить;
  2. количество способов выбрать максимальное количество кучек для удаления.

Два способа считаются различными, если существует такая позиция $$$i$$$, что в одном из способов кучка на позиции $$$i$$$ удаляется, а во втором — нет. Поскольку количество способов может быть большим, выведите его по модулю $$$998\,244\,353$$$.

Если в каком-то раунде Руслан не может сделать так, чтобы Артем проиграл, выведите для этого раунда одно число -1.

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

Первая строка входных данных содержит два целых числа $$$n$$$ и $$$q$$$ ($$$1 \le n, q \le 10^5$$$) — размер массива и количество раундов.

Вторая строка входных данных содержит $$$n$$$ целых чисел $$$a_1, a_2, \dots, a_n$$$ ($$$0 \le a_i \le 50$$$) — элементы исходного массива.

Далее следуют $$$q$$$ строк, $$$i$$$-я из которых содержит два целых числа $$$l_i, r_i$$$ ($$$1 \le l_i \le r_i \le n$$$) — границы отрезка, на котором ребята хотят сыграть в игру в $$$i$$$-м раунде.

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

Для каждого раунда:

  • если Руслан может победить, выведите два целых числа — максимальное количество кучек, которые можно удалить, и количество способов удалить максимальное количество кучек, взятое по модулю $$$998\,244\,353$$$;
  • иначе выведите -1.
Пример
Входные данные
9 5
0 1 2 1 3 4 5 6 0
1 5
2 5
3 5
4 5
1 9
Выходные данные
4 1
2 1
0 1
-1
8 2