Дано поле $$$n \times m$$$, каждая клетка которого заблокирована или свободна.
Монокарп ставит робота в некоторую свободную клетку поля, а затем запускает его по некоторому циклическому маршруту. За один ход робот может переместиться в свободную клетку, соседнюю по стороне или по углу с текущей. Маршрут должен удовлетворять следующим условиям:
Например, робот может начать в некоторой клетке, пойти два раза направо, два раза вниз-влево и два раза наверх. Так как маршрут циклический, робот меняет направление трижды: направо $$$\rightarrow$$$ вниз-влево $$$\rightarrow$$$ наверх $$$\rightarrow$$$ направо.
Два маршрута считаются различными, если:
Обратите внимание, что маршрут циклический, поэтому два маршрута, отличающиеся только стартовой клеткой, на самом деле не считаются различными.
Сколько различных маршрутов для робота может выбрать Монокарп?
В первой строке записаны два целых числа $$$n$$$ и $$$m$$$ ($$$2 \le n, m \le 3 \cdot 10^5$$$; $$$nm \le 3 \cdot 10^5$$$) — размеры поля.
Затем следуют $$$n$$$ строк по $$$m$$$ символов — описание поля. Каждый символ — это либо 'x', обозначающий заблокированную клетку, либо '.', обозначающий свободную клетку.
Выведите одно целое число — количество различных маршрутов робота, которые может выбрать Монокарп.
3 3.x.x.x...
6
4 3x.x..x...x..
32
4 5....................
236