Для двох послідовностей ~S~ і ~T~ довжини ~N~, що складаються з 0 і 1, визначимо ~f(S, T)~ таким чином:
Розглянемо повторення наступної операції над ~S~ так, щоб ~S~ дорівнювала ~T~. ~f(S, T)~ --- мінімально можлива загальна вартість цих операцій.
---Змінити ~S_i~(з 0 на 1 або навпаки). Вартість цієї операції дорівнює ~D \times C_i~, де ~D~ --- кількість цілих чисел ~j~, таких що ~S_j \neq T_j~ (~1 \leq j \leq N~) безпосередньо перед цією зміною.
Існує ~2^N \times (2^N - 1)~ пар (~S, T~) різних послідовностей довжини ~N~, що складаються з 0 і 1.
Обчисліть суму ~f(S, T)~ над усіма цими парами за модулем (~10^9 + 7~).
Формат вхідних даних
Перший рядок вхідного потоку містить ціле число ~N~ (~1 \le N \le 2 \times 10^5~)
Наступний рядок містить ~N~ цілих чисел ~C_i~ (~1 \le C_i \le 10^9~).
Числа у рядках розділяються пропуском.
Формат вихідних даних
У вихідний потік вивести шукану суму.
Примітка
До прикладу 1:
Існують дві пари (~S, T~) різних послідовностей довжиною 2, які складаються з 0 і 1, а саме:
~S = (0), T = (1)~: змінюючи ~S_1~ на 1, ми можемо отримати ~S = T~ за ціною 1000000000, отже, ~f(S, T) = 1000000000~.
~S = (1), T = (0)~: змінюючи ~S_1~ на 0, ми можемо отримати ~S = T~ за ціною 1000000000, тому ~f(S , T) = 1000000000~.
Сума їх дорівнює 2000000000, і ми повинні вивести її за модулем (~10^9 + 7~), тобто 999999993.
Приклад вхідних даних
1
1000000000
Приклад вихідних даних
999999993
Приклад вхідних даних
2
5 8
Приклад вихідних даних
124
Приклад вхідних даних
5
52 67 72 25 79
Приклад вихідних даних
269312
Коментарі