Торговцы
ограничение по времени на тест
2 секунды
ограничение по памяти на тест
256 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

Путешествуя по Фарлуму, Хорнет встретила $$$n$$$ торговцев. Каждый из них продавал ровно один уникальный товар, и изначально цена товара у $$$i$$$-го торговца была равна $$$a_i$$$.

Хорнет интересуется, сколько суммарно придется потратить денег, чтобы купить несколько подряд идущих товаров. Есть только одна проблема: торговцы постоянно меняют цену на свой товар. Формально, $$$q$$$ раз происходят события одного из трех типов:

Под инвертированием цены подразумевается следующий процесс:

  1. торговец записывает текущую цену в двоичной системе счисления с $$$k$$$ знаками (гарантируется, что $$$k$$$ бит достаточно);
  2. если двоичная запись получилась длины меньше $$$k$$$, торговец дополняет ее ведущими нулями;
  3. после чего торговец инвертирует все биты данного числа (например, из «01001» в «10110»);
  4. и переводит полученную двоичную запись обратно в десятичную систему счисления.

Вам необходимо помочь Хорнет и ответить на все ее запросы.

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

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

Во второй строке даны $$$n$$$ чисел $$$a_i$$$ — изначальная цена товаров у торговцев ($$$0 \le a_i < 2^k$$$).

В третьей строке дано единственное число $$$q$$$ — количество запросов ($$$1 \le q \le 2 \cdot 10^5$$$).

В следующих $$$q$$$ строках даны описания запросов в формате, данном в условии: сначала тип запроса, затем параметры ($$$1 \le i, l, r \le n$$$; $$$0 \le x < 2^k$$$).

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

Для каждого запроса третьего типа (узнать сумму), выведите ответ на него в отдельной строке.

Пример

Входные данные
5 3
1 2 3 4 5
7
1 2 7
3 1 5
3 2 2
2 2 2
3 2 2
2 1 5
3 1 5
Выходные данные
20
7
0
22