import java.util.*;
import java.io.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
int n = Integer.parseInt(st.nextToken());
int m = Integer.parseInt(st.nextToken());
int[][] days = new int[n + 1][m + 1]; // 共n步,m个小组
for (int i = 1; i <= m; i++) {
st = new StringTokenizer(br.readLine());
for (int j = 1; j <= n; j++) {
days[j][i] = Integer.parseInt(st.nextToken());
}
}
int[][] dp = new int[n + 1][m + 1];
for (int i = 1; i <= n; i++) { // 第i步
for (int j = 1; j <= m; j++) { // 第j个小组
// dp[i-1][j] 表示不更换小组
dp[i][j] = Math.min(dp[i - 1][j], j == 1 ? dp[i - 1][m] : dp[i - 1][j - 1]) + days[i][j];
// 当前为第一个小组(j==1)时,要从第m组更换过来,否则从上一小组j-1更换过来
}
}
int min = Integer.MAX_VALUE;
for (int i = 1; i <= m; i++) {
min = Math.min(min, dp[n][i]); // 得到最后一步时花费天数最少的那个小组对应的天数
}
System.out.println(min);
}
}
每日一水~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~