Коров'яча хімія#10375

Коров'яча хімія

1 секунда
128 мегабайтів
Легка

Бессі відкладала виконання домашнього завдання з коров'ячої хімії, і тепер їй потрібна твоя допомога! Їй потрібно створити суміш із трьох різних коров'ячих хімікатів. Однак, як відомо всім хорошим коровам, деякі коров'ячі хімікати не можна змішувати один з одним, інакше вони викличуть вибух. Зокрема, два коров'ячі хімікати з мітками і можуть бути присутні в одній і тій же суміші, тільки якщо a \oplus b \leq k.

ПРИМІТКА. Тут a \oplus b позначає "побітове виключне or" невід'ємних цілих чисел і . Ця операція еквівалентна додаванню кожної відповідної пари бітів за основою без урахування переносу. Наприклад,

0 \oplus 0 = 1 \oplus 1 = 0,

1 \oplus 0 = 0 \oplus 1 = 1,

5 \oplus 7 = 101_{2} \oplus 111_{2} = 010_{2} = 2

У Бессі є ящиків з коров'ячими хімікатами, -та коробка містить хімікати, позначені від l_i до r_i включно. Жодні дві коробки не мають спільних коров'ячих хімікатів. Вона хоче знати, скільки унікальних сумішей з трьох різних коров'ячих хімікатів вона може створити. Дві суміші вважаються різними, якщо в одній присутній хоча б один коров'ячий хімікат, а в іншій — ні. Оскільки відповідь може бути дуже великою, виведіть її за модулем 10^9 + 7.

Вхідні дані

Перший рядок містить два цілі числа (1 \leq n \leq 2 \cdot 10^4) і (1 \leq k \leq 10^9). Кожен із наступних рядків містить два цілі числа l_i і r_i (0 \leq l_i \leq r_i \leq 10^9). Гарантується, що ящики з коров'ячими хімікатами подаються у порядку зростання їх вмісту; а саме, r_i < l_{i+1} для кожного 1 \leq i < n.

Вихідні дані

Виведіть кількість сумішей трьох різних хімікатів, які Бессі може створити, за модулем 10^9 + 7.

Приклади

Приклад 1

Loading
Loading

Приклад 2

Loading
Loading

Примітка

Ми можемо розділити хімікати на груп, які не можуть бути змішані: (), (), , (). Кожна з перших дванадцяти груп дасть унікальні суміші, а остання дасть (оскільки всі C_8^3 комбінації трьох різних хімікатів із () можливі), всього отримаємо 352 \cdot 12 + 56 = 4280 сумішей.