B. Алиса и список подарков
ограничение по времени на тест
1 секунда
ограничение по памяти на тест
256 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

Недавно Алиса получила много подарков. Поэтому она решила упаковать некоторые из них в коробки и отправить своим друзьям.

Всего есть $$$n$$$ типов подарков. Подарки одного типа полностью одинаковые (то есть подарки одного типа неотличимы). Подарки разных типов отличаются между собой (то есть любые два подарка разных типов отличаются друг от друга). Количество подарков каждого типа, которое есть у Алисы, очень большое, поэтому мы можем считать его бесконечным.

Также есть $$$m$$$ коробок. Они все предназначены для разных людей, поэтому все попарно различны (предположим, что имена $$$m$$$ ее друзей написаны на каждой коробке). Например, положить подарок первого типа в первую коробку, но не положить во вторую отличается от того, чтобы положить подарок первого типа во вторую коробку, но не положить в первую.

Алиса хочет упаковать подарки по следующим правилам:

  • Она не будет класть больше одного подарка какого-то типа в одну и ту же коробку, поэтому в каждой коробке типы подарков должны быть различны (то есть каждая коробка содержит некоторое подмножество $$$n$$$ типов подарков, пустые коробки разрешены);
  • Подарок каждого типа должен быть упакован в хотя бы одну коробку.

Сейчас Алисе стало интересно, сколькими способами она может упаковать подарки. Помогите ей и посчитайте это количество. Поскольку ответ может быть слишком большим, найдите его по модулю $$$10^9+7$$$.

Посмотрите на примеры и их пояснение для лучшего понимания условия.

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

В первой строке находится два целых числа $$$n$$$ и $$$m$$$, разделенных пробелами ($$$1 \leq n,m \leq 10^9$$$) — количество типов подарков и количество коробок, которое есть у Алисы.

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

Выведите одно целое число — количество способов упаковать подарки в коробки по правилам Алисы, взятое по модулю $$$10^9+7$$$.

Примеры
Входные данные
1 3
Выходные данные
7
Входные данные
2 2
Выходные данные
9
Примечание

В первом примере существует семь способов упаковать подарки:

$$$\{1\}\{\}\{\}$$$

$$$\{\}\{1\}\{\}$$$

$$$\{\}\{\}\{1\}$$$

$$$\{1\}\{1\}\{\}$$$

$$$\{\}\{1\}\{1\}$$$

$$$\{1\}\{\}\{1\}$$$

$$$\{1\}\{1\}\{1\}$$$

Во втором примере существует девять способов упаковать подарки:

$$$\{\}\{1,2\}$$$

$$$\{1\}\{2\}$$$

$$$\{1\}\{1,2\}$$$

$$$\{2\}\{1\}$$$

$$$\{2\}\{1,2\}$$$

$$$\{1,2\}\{\}$$$

$$$\{1,2\}\{1\}$$$

$$$\{1,2\}\{2\}$$$

$$$\{1,2\}\{1,2\}$$$

Например, способ упаковать подарки $$$\{2\}\{2\}$$$ неправильный, потому что подарки первого типа должны быть упакованы в хотя бы одну коробку.