#include <bits/stdc++.h>
#define INF 0x3f3f3f3f
using namespace std;
const int AX = 20+6;
int a[AX][AX];
int d , w ; 
int mark[AX][AX];
struct Node{
	int x , y ;
};
int res ; 
int vis[AX][AX];

int main(){
	while( scanf("%d%d",&d,&w) && d && w ){
		for( int i = 0 ; i < d; i++ ){
			for( int j = 0 ; j < w ; j++ ){
				scanf("%d",&a[i][j]);
			}
		}
		res = 0 ;
		for( int sx = 0 ; sx < d ; sx++ ){
			for( int sy = 0 ; sy < w ; sy++ ){
				for( int ex = sx + 2 ; ex < d ; ex ++ ){
					for( int ey = sy + 2 ; ey < w ; ey ++ ){
						int minus = INF;
						int ans = 0 ;
						for( int i = sx ; i <= ex ; i++ ) minus = min( minus , a[i][sy] );
						for( int i = sx ; i <= ex ; i++ ) minus = min( minus , a[i][ey] );
						for( int i = sy ; i <= ey ; i++ ) minus = min( minus , a[sx][i] );
						for( int i = sy ; i <= ey ; i++ ) minus = min( minus , a[ex][i] );
						int f = 1;
						for( int i = sx + 1 ; i < ex ; ++i ){
							for( int j = sy + 1; j < ey ; j++ ){
								if( a[i][j] >= minus ){
									ans = 0;
									f = 0 ;
									break;
								}else ans += minus - a[i][j];
							}
							if( !f ) break;
						}
						res = max( res , ans ) ;
					}
				}
			}
		}
		printf("%d\n",res);
	}
	return 0 ;
}



