from heapq import * def solve(): N,M=map(int,input().split()) A=[] for _ in range(N): A.append(list(map(int,input().split()))) if N==1: return 0 inf=float("inf") T=[[inf]*M for _ in range(N)] U=[inf]*N; U[0]=0 Q=[(0,0,-1)] while Q: cost,i,j=heappop(Q) if i==N-1: return cost if j==-1: Ai=A[i]; Ti=T[i] for k in range(M): if Ti[k]>cost+Ai[k]: Ti[k]=cost+Ai[k] heappush(Q,(Ti[k],i,k)) else: alpha=cost+A[i+1][j] if T[i+1][j]>alpha: T[i+1][j]=alpha heappush(Q, (T[i+1][j],i+1,j)) if U[i+1]>alpha: U[i+1]=alpha heappush(Q, (U[i+1],i+1,-1)) #================================================== print(solve())