编程题
### 问题描述
鸡哥是一个知名的探险家,他最近发现了一个神秘的迷宫。这个迷宫看起来就像一个由 $N \times M$ 的方格组成的二维矩阵。在这个迷宫中,$1$ 代表可以通行的路径,$0$ 则表示墙壁,无法通行。
鸡哥在迷宫的任何位置开始探险,但他有一个奇怪的习惯:他必须先向右至少移动一格,然后向下至少移动一格。这样,他的探险路线总是向右再向下。鸡哥希望走过尽可能长的路径,以此来发现更多的秘密。
你能帮助鸡哥找出迷宫中最长的符合他习惯的路径吗?
### 输入格式
第一行包含两个整数 $N$ 和 $M$($2 \leq N, M \leq 300$),分别表示迷宫的行数和列数。
接下来的 $N$ 行,每行包含 $M$ 个整数,表示迷宫的布局。其中,$0$ 表示墙壁,$1$ 表示可以通行的路径。保证至少存在一条符合鸡哥习惯的路径。
### 输出格式
输出一个整数,表示鸡哥可以探索的最长路径的长度。
### 样例输入
```
3 3
1 1 0
0 1 1
1 1 1
```
### 样例输出
```
4
```