#include #include #include #include #include #include #include #include #include #include #include using namespace std; #define L(i) i<<1 #define R(i) i<<1|1 #define INF 0x3f3f3f3f #define pi acos(-1.0) #define eps 1e-4 int n,m; int a[1010][1010]; long long dp[1010][1010]; int main() { while(scanf("%d%d",&n,&m) != EOF) { for(int i = 0; i < n; i++) for(int j = 0; j < m; j++) scanf("%d",&a[i][j]); memset(dp,0,sizeof(dp)); dp[1][0] = a[0][0] * a[1][0]; dp[0][1] = a[0][0] * a[0][1]; for(int i = 3; i <= ((m-1)%2?m-1:m-2); i++) dp[0][i] = dp[0][i-2] + a[0][i-1] * a[0][i]; for(int i = 3; i <= ((n-1)%2?n-1:n-2); i++) dp[i][0] = dp[i-2][0] + a[i-1][0] * a[i][0]; for(int i = 1; i < n; i++) for(int j = 1; j < m; j++) if((i+j)%2) { dp[i][j] = min(a[i-1][j]*a[i][j],a[i][j-1]*a[i][j]) + dp[i-1][j-1]; if(j > 1) dp[i][j] = min(a[i][j-1]*a[i][j]+dp[i][j-2],dp[i][j]); if(i > 1) dp[i][j] = min(a[i-1][j]*a[i][j]+dp[i-2][j],dp[i][j]); } // for(int i = 0; i < n; i++) // {for(int j = 0; j