#include <bits/stdc++.h>
#define MAX_S 101
using namespace std;
int main(){
uint16_t n, m, ct = 1;
while(cin >> n >> m){
uint32_t g[MAX_S + 1][MAX_S + 1] = {};
uint32_t cost[MAX_S + 1][MAX_S + 1] = {};
for(int i = 0;i < n;i++)
for(int j = 0;j < m;j++)
cin >> g[i][j],cost[i][j] = (i || j) * min(i ? cost[i - 1][j] : UINT_MAX,j ? cost[i][j - 1] : UINT_MAX) + g[i][j];
cout << "Case #" << ct++ << " :\n" << cost[n - 1][m - 1] << endl;
}
return 0;
}
/*
由於地圖由左上填至右下(單方向)
因此直接使用DP
到達每格所需的最小體力 = min(到達左方一格所需最小體力 , 到達上方一格最小體力) + 此格所需體力
*/