#include<bits/stdc++.h>
using namespace std;
long long n,m,dp[2001][2001],a[2001][2001];
int change(int x)
{
if(x==1) return n;
else return x-1;
}
int main()
{
cin>>n>>m;
swap(n,m);
for(int i=1;i<=n;i++) for(int j=1;j<=m;j++) cin>>a[i][j];
for(int i=1;i<=m;i++)
for(int j=1;j<=n;j++)
dp[i][j]=min(dp[i-1][j],dp[i-1][change(j)])+a[i][j];
long long ans=INT_MAX;
for(int i=1;i<=n;i++)
ans=min(ans,dp[m][i]);
cout<<ans;
return 0;
}
转移方程dpi,j=min(dpi−1,j,dpi−1,j−1)+ai,j没错,那错哪了