Package for this problem was not updated by the problem writer or Codeforces administration after we’ve upgraded the judging servers. To adjust the time limit constraint, solution execution time will be multiplied by 2. For example, if your solution works for 400 ms on judging servers, then value 800 ms will be displayed and used to determine the verdict.

Virtual contest is a way to take part in past contest, as close as possible to participation on time. It is supported only ICPC mode for virtual contests.
If you've seen these problems, a virtual contest is not for you - solve these problems in the archive.
If you just want to solve some problem from a contest, a virtual contest is not for you - solve this problem in the archive.
Never use someone else's code, read the tutorials or communicate with other person during a virtual contest.

No tag edit access

D. Cycle

time limit per test

3 secondsmemory limit per test

256 megabytesinput

standard inputoutput

standard outputLittle Petya very much likes rectangular tables that consist of characters "0" and "1". Recently he has received one such table as a gift from his mother. The table contained *n* rows and *m* columns. The rows are numbered from top to bottom from 1 to *n*, the columns are numbered from the left to the right from 1 to *m*. Petya immediately decided to find the longest cool cycle whatever it takes.

A cycle is a sequence of pairwise distinct cells where each two consecutive cells have a common side; besides, the first cell has a common side with the last cell. A cycle is called cool if it fulfills all the following conditions simultaneously:

- The cycle entirely consists of the cells that contain "1".
- Each cell that belongs to the cycle, has a common side with exactly two other cells that belong to the cycle.
- Each cell of the table that contains "1" either belongs to the cycle or is positioned outside of it (see definition below).

To define the notion of "outside" formally, let's draw a cycle on a plane. Let each cell of the cycle (*i*, *j*) (*i* is the row number, *j* is the column number) correspond to the point (*i*, *j*) on the coordinate plane. Let a straight line segment join each pair of points that correspond to the cells belonging to the cycle and sharing a side. Thus, we will get a closed polyline that has no self-intersections and self-touches. The polyline divides the plane into two connected parts: the part of an infinite area and the part of a finite area. It is considered that cell (*r*, *c*) lies outside of the cycle if it does not belong to the cycle and the corresponding point on the plane with coordinates (*r*, *c*) lies in the part with the infinite area.

Help Petya to find the length of the longest cool cycle in the table. The cycle length is defined as the number of cells that belong to the cycle.

Input

The first line contains two integers *n* and *m* (1 ≤ *n*, *m* ≤ 1000) — the number of rows and columns in the table, respectively. Each of the following *n* lines contains *m* characters. Each character can be either "0" or "1".

Output

Print a single number — the length of the longest cool cycle in the table. If such cycles do not exist, print 0.

Examples

Input

3 3

111

101

111

Output

8

Input

5 5

01010

10101

01010

10101

01010

Output

0

Input

7 7

1111111

1000101

1000101

1000101

1000111

1000001

1111111

Output

24

Input

5 5

11111

10001

10101

10001

11111

Output

0

Note

In the first example there's only one cycle and it is cool.

In the second sample there's no cycle at all.

In the third sample there are two cool cycles: their lengths are 12 and 24.

In the fourth sample there also is only one cycle but it isn't cool as there's a cell containing "1" inside this cycle.

Codeforces (c) Copyright 2010-2020 Mike Mirzayanov

The only programming contests Web 2.0 platform

Server time: Sep/21/2020 23:21:48 (g2).

Desktop version, switch to mobile version.

Supported by

User lists

Name |
---|