import math,string,itertools,fractions,heapq,collections,re,array,bisect,sys,random,time
sys.setrecursionlimit(10**7)
inf = 10**20
mod = 10**9 + 7
def LI(): return list(map(int, input().split()))
def LF(): return list(map(float, input().split()))
def LS(): return input().split()
def I(): return int(input())
def F(): return float(input())
def S(): return input()
def main():
h,w = LI()
a = [LI() for _ in range(h)]
r = 0
c = [[1]*w for _ in range(h)]
q = [(a[i][j],i,j) for j in range(w) for i in range(h)]
q.sort()
dy = [0,0,1,-1]
dx = [1,-1,0,0]
for qi in range(h*w):
k, y, x = q[qi]
for i in range(4):
ty,tx = y+dy[i], x+dx[i]
if ty < 0 or ty >= h or tx < 0 or tx >= w:
continue
if a[ty][tx] <= k:
continue
c[ty][tx] += c[y][x]
return sum([sum(r) % mod for r in c]) % mod
print(main())