На плоскости задано множество точек (x, y)
, где x
и y
(1 ≤ x ≤ M
, 1 ≤ y ≤ N
) - целые. С каждой точки выходит ровно один из следующих векторов: (-1
, -1
), (-1
, 0), (-1
, 1), (0, 1), (1, 1)
, (1, 0), (1, -1
), (0, -1
). Каждый вектор соединяет одну целочисленную точку плоскости с другой. Например, если из точки (2, 5)
выходит вектор (1, 1)
, то он соединяет эту точку с (3, 6)
, но не наоборот.
Последовательность из двух и более точек плоскости a\[1\], a\[2\], …, a\[k\] назовём циклом, если каждая точка a\[i\] соединена вектором с a\[i\]+1 (1 ≤ i
≤ k - 1), и a\[k\] соединена вектором с a\[1\]. Циклы считаются разными, если они отличаются хотя бы одной вершиной.
Напишите программу, которая по информации о векторах, выходящих из точек плоскости, находит количество разных циклов.
Первая строка содержит два целых числа N
(1 ≤ N ≤ 100
) и M
(1 ≤ M ≤ 100
). Каждая из последующих N
строк, содержит M
пар чисел (то есть 2×M чисел). Пара x
, находящаяся в строке y
задаёт вектор в точке (x, y)
.
Вывести одно целое число - количество циклов, образованных векторами.