Довгоочікувана вечірка
Сакурако організовує вечірку для своїх друзів після їхнього тесту з математики. У нього всього друзів. Настрій -го друга представлений цілим числом , а настрій Сакурако дорівнює нулю.
Настрій вечірки в будь-який момент розраховується як побітове XOR рівнів настрою всіх друзів, які вже прийшли. Друзі приходять на вечірку по одному, і жоден з друзів не приходить в один і той же час. Для будь-якого конкретного порядку прибуття Сакурако може розрахувати загальну суму настрою вечірки на кожному етапі.
Наприклад, якщо у Сакурако є троє друзів з настроями відповідно, і вони приходять на вечірку в порядку , тоді сума настроїв на кожному етапі дорівнює .
Однак, оскільки Сакурако не знає точного порядку, в якому його друзі прийдуть, він хоче дізнатися загальну суму настроїв для всіх можливих перестановок їхнього порядку прибуття.
Формально, Сакурако хоче знайти:
де — це група всіх перестановок довжини .
Крім того, Сакурако іноді цікавиться конкретними відрізками своїх друзів. Він хоче дізнатися загальну суму настроїв, якщо на вечірку прийдуть лише друзі з настроями . У нього є таких запитань, і він просить вас на них відповісти.
Оскільки ця сума може бути занадто великою, знайдіть її за модулем .
Вхідні дані
Перший рядок містить два цілі числа — кількість друзів та кількість запитань.
Другий рядок містить цілих чисел — настрої друзів Сакурако.
Кожен з наступних рядків містить два цілі числа , що описують запит.
Вихідні дані
Для кожного запитання виведіть відповідь за модулем .
Приклади
Примітка
У першому тестовому прикладі всі друзі приходять на вечірку. Є можливих порядків їх прибуття:
: сума настроїв на кожному етапі дорівнює ;
: сума настроїв на кожному етапі дорівнює ;
: сума настроїв дорівнює ;
: сума настроїв дорівнює ;
: сума настроїв дорівнює ;
: сума настроїв дорівнює .
Отже, загальна сума настроїв дорівнює .
Оцінювання
( балів): ;
( балів): ;
( балів): ;
( балів): ;
( бали): ;
( бали): ;
( бали): без додаткових обмежень.