#include #include #include #define INF 99999999 using namespace std; int min(int x,int y); int dp[1003][1003]={0}; int a[1003][1003]={0}; int main() { int n=0,m=0; while(scanf("%d%d",&n,&m)!=EOF) { for(int i=1;i<=n;i++) { for(int j=1;j<=m;j++) scanf("%d",&a[i][j]); } dp[1][2]=a[1][1]*a[1][2]; dp[2][1]=a[1][1]*a[2][1]; for(int i=1;i<=n;i++) for(int j=1;j<=m;j++) { if((i+j)%2==0||(i==1&&j==2)||(i==2&&j==1)) continue; int temp=INF; if(j-2>=1) temp=min(temp,dp[i][j-2]+a[i][j]*a[i][j-1]); if(i-2>=1) temp=min(temp,dp[i-2][j]+a[i][j]*a[i-1][j]); if((i-1>=1&&j-1>=2)||(i-1>=2&&j-1>=1)) temp=min(temp,dp[i-1][j-1]+a[i][j]*min(a[i-1][j],a[i][j-1])); dp[i][j]=temp; } printf("%d\n",dp[n][m]); } return 0; } int min(int x,int y) { if(x