Задача №2964. Попытка к бегству

Работаем командами. Команда создает беседу в вк, где обменивается кодом. Задача считается решенной командой, когда она решена всеми участниками команды.
Продолжительность олимпиады 3 часа (первые две пары).
Разбиение на команды:
1) Советск 2: Алексей Жуйков, Дмитрий Бут, Кирилл Лемтюгов
2) Individuals + CS KvsT: Олег Бабиченко, Александр Кузнецов, Тэдер Ярослав
3) Gymn32: Алла Натяганова, Юлия Кондратович, Иван Ларютин
4) Арина Чеверда
5) Роман Хуснутдинов

Узник пытается бежать из замка, который состоит из N×M квадратных комнат, расположенных в виде прямоугольника NxM. Между любыми двумя соседними комнатами есть дверь, однако некоторые комнаты закрыты и попасть в них нельзя. В начале узник находится в левой верхней комнате и для спасения ему надо попасть в противоположную правую нижнюю комнату. Времени у него немного, всего он может побывать не более, чем в N+M-1 комнате на своем пути, то есть перемещаться он должен только вправо или вниз. Определите количество маршрутов, которые ведут к выходу.

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

Первая строчка входных данных содержит натуральные числа N и M, не превосходящих 1000. Далее идет план замка в виде N строчек из M чисел в каждой. Одно число соответствует одной комнате: 1 означает, что в комнату можно попасть, 0 – что комната закрыта.

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

Программа должна напечатать количество маршрутов, ведущих узника к выходу и проходящих через M+N-1 комнату, или слово Impossible, если таких маршрутов не существует.

Входные данные подобраны таким образом, что искомое число маршрутов не превосходит 2.000.000.000.

Примеры
Входные данные
3 5
1 1 1 1 1
1 0 1 0 1
1 1 1 1 1
Выходные данные
3
Сдать: для сдачи задач необходимо войти в систему