An đang chơi một trò chơi, màn hình trò chơi là hình chữ nhật được chia làm \(n \times m\) ô vuông đơn vị (\(n\) dòng và \(m\) cột). Mỗi ô vuông được đặt một phần thưởng, phần thưởng ở ô \((i, j)\) là \(a_{i,j}\). Một nhân vật đang đứng ở ô trái trên (vị trí dòng 1, cột 1), cần phải đi chuyển tới ô phải dưới cùng (vị trí dòng \(n\), cột \(m\)).
Mỗi bước, An có thể điều khiển nhân vật đi:
- Xuống dưới một đơn vị
- Hoặc sang phải một đơn vị
Nhưng không được phép đi xuống ba lần liên tiếp. Việc đi sang phải nhiều lần liên tiếp là không bị giới hạn.
Yêu cầu
Hãy giúp An tìm cách điều khiển nhân vật sao cho tổng giá trị phần thưởng ở những ô mà nhân vật đi qua (bao gồm cả ô xuất phát và ô kết thúc) là lớn nhất có thể. Đưa ra tổng giá trị đó.
Dữ liệu vào
- Dòng đầu tiên chứa hai số nguyên dương \(n\) và \(m\).
- \(n\) dòng tiếp theo, mỗi dòng chứa \(m\) số nguyên. Trên dòng thứ \(i\), số thứ \(j\) là \(a_{i,j}\).
Dữ liệu đảm bảo luôn tồn tại một cách di chuyển hợp lệ từ ô trái trên tới ô phải dưới.
Dữ liệu ra
- Ghi một số nguyên dương duy nhất là tổng giá trị phần thưởng lớn nhất tìm được.
Input 1
4 3
1 1 1
5 1 1
5 1 2
3 3 1
Output 1
16
Giải thích
- An có thể điều khiển nhân vật: đi xuống, đi xuống, sang phải, đi xuống, sang phải.
Ràng buộc
- Trong tất cả các test: \(1 \le n, m \le 2025\); \(1 \le a_{i,j} \le 10^5\).
- Có 25% số test với \(n, m \le 10\).
- Có 30% số test với \(n \le 3\).
- Có 45% số test với ràng buộc gốc.
Nhận xét