#include #include #include using namespace std; #define ll long long int n,m; int a[1100][1100]; ll f[1100][1100]; int main() { 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]); memset(f,0x3f,sizeof(f)); f[1][1]=0; for(int i=1;i<=n;i++) for(int j=1;j<=m;j++) if(i!=1||j!=1) { if((i+j)&1) { if(i!=1) f[i][j]=f[i-1][j]+a[i][j]*a[i-1][j]; if(j!=1) f[i][j]=min(f[i][j],f[i][j-1]+a[i][j]*a[i][j-1]); } else { if(i!=1) f[i][j]=f[i-1][j]; if(j!=1) f[i][j]=min(f[i][j],f[i][j-1]); } } printf("%I64d\n",f[n][m]); } return 0; }