local mmi, mma = math.min, math.max local h, w = io.read("*n", "*n", "*l") local a = {} for i = 1, h do a[i] = {} local s = io.read() for b in s:gmatch("(%d+)") do table.insert(a[i], tonumber(b)) end end if h == 1 then print(0) os.exit() end local dp1, dp2 = {}, {} for i = 1, w do dp1[i] = a[1][i] end for i = 1, h - 1 do local src = i % 2 == 1 and dp1 or dp2 local dst = i % 2 == 1 and dp2 or dp1 local minpos = 1 for j = 2, w do if src[j] <= src[minpos] then minpos = j end end local minval = src[minpos] for j = 1, w do if j ~= minpos then src[j] = mmi(src[j], minval + a[i][j]) end end for j = 1, w do dst[j] = src[j] + a[i + 1][j] end end local tbl = h % 2 == 0 and dp2 or dp1 local ans = tbl[1] for i = 2, w do ans = mmi(ans, tbl[i]) end print(ans)