E. Бинарные строки и блоки
ограничение по времени на тест
2 секунды
ограничение по памяти на тест
512 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

Назовем блоком в бинарной строке (строке, состоящей из символов 0 и/или 1) ее непрерывную подстроку из символов одного и того же типа, которую нельзя продлить ни влево, ни вправо. Например, в строке 110001111 три блока:

  • 11 (с $$$1$$$-го символа по $$$2$$$-й символ);
  • 000 (с $$$3$$$-го символа по $$$5$$$-й символ);
  • 1111 (с $$$6$$$-го символа по $$$9$$$-й символ).

Подстрока с $$$7$$$-го символа по $$$9$$$-й символ 111 не является блоком, потому что ее можно продлить влево. Подстрока с $$$1$$$-го символа по $$$5$$$-й символ 11000 не является блоком, потому что она содержит символы разных типов.

Назовем строку красивой, если из нее можно удалить ровно один блок так, чтобы получилась строка из нечетного количества блоков. Например:

  • строка 110001111 красивая, потому что можно удалить блок с $$$3$$$-го по $$$5$$$-й символ, и получится строка 111111, состоящая из одного блока;
  • строка 1010 красивая, потому что можно удалить блок с $$$1$$$-го по $$$1$$$-й символ, и получится строка 010, состоящая из трех блоков;
  • строка 0000 некрасивая, потому что единственный способ удалить из нее блок приведет к тому, что мы получим пустую строку, а она состоит из $$$0$$$ блоков.

Дано число $$$n$$$ и $$$m$$$ ограничений, $$$i$$$-е из которых описывается парой целых чисел $$$l_i, r_i$$$. Обозначим за $$$s[l:r]$$$ подстроку строки $$$s$$$ с символа $$$l$$$ по символ $$$r$$$ включительно, то есть $$$s[l:r] = s_l s_{l+1} \dots s_r$$$. Ваша задача — посчитать количество бинарных строк $$$s$$$ длины $$$n$$$, удовлетворяющих следующему условию:

  • для каждого $$$i$$$ от $$$1$$$ до $$$m$$$ подстрока $$$s[l_i:r_i]$$$ является красивой.
Входные данные

В первой строке задано одно целое число $$$t$$$ ($$$1 \le t \le 10^4$$$) — количество наборов входных данных.

В первой строке каждого набора входных данных заданы два целых числа $$$n$$$ и $$$m$$$ ($$$2 \le n \le 3 \cdot 10^5$$$; $$$1 \le m \le 3 \cdot 10^5$$$) — требуемая длина строки и количество ограничений, соответственно.

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

Дополнительные ограничения на входные данные:

  • сумма $$$n$$$ по всем наборам не превосходит $$$3 \cdot 10^5$$$;
  • сумма $$$m$$$ по всем наборам не превосходит $$$3 \cdot 10^5$$$.
Выходные данные

На каждый набор входных данных выведите одно целое число — количество строк, удовлетворяющих всем ограничениям. Так как оно может быть огромным, выведите его по модулю $$$998244353$$$.

Пример
Входные данные
3
4 3
1 2
2 3
3 4
4 2
1 2
3 4
200 1
13 37
Выходные данные
2
4
570529459
Примечание

В первом примере из условия подходят следующие строки: 1010, 0101. Для каждой из этих строк и $$$s[1:2]$$$, и $$$s[2:3]$$$, и $$$s[3:4]$$$ являются красивыми.