#include <iostream>
#include <queue>
#define debug 0
using namespace std;
int date[1000][1000]={0};
int cost[1000][1000]={0};
int r,c;
int Px[4]={1,0,-1,0};
int Py[4]={0,-1,0,1};
int XX(int nowx,int P){
	nowx+=Px[P];
	if(nowx>=r)nowx=0;
	if(nowx<0)nowx=r-1;
	return nowx;
}
int YY(int nowy,int P){
	nowy+=Py[P];
	if(nowy>=c)nowy=0;
	if(nowy<0)nowy=c-1;
	return nowy;
}

int main(){
	int ax,ay,bx,by,tx,ty;
	cin>>r>>c>>ax>>ay>>bx>>by;
	queue<int>x;
	queue<int>y;
	x.push(ax);
	y.push(ay);
	date[ax][ay]=1;
	cost[ax][ay]=1;
	
	while(x.empty()==0){
		for(int i=0;i<4;i++){
			tx=XX(x.front(),i);
			ty=YY(y.front(),i);
			if(date[tx][ty]==0){
				date[tx][ty]=date[x.front()][y.front()]+1;
				cost[tx][ty]=cost[x.front()][y.front()];
				x.push(tx);
				y.push(ty);
			}
			else if(date[tx][ty]==date[x.front()][y.front()]+1){
				cost[tx][ty]=(cost[tx][ty]+cost[x.front()][y.front()])%100000007;
			}
		}
		
		
		x.pop();
		y.pop();
	}
	cout<<cost[bx][by]<<endl;
	if(debug){
		for(int i=0;i<c;i++){
			for(int j=0;j<r;j++)cout<<date[j][i]<<" ";
			cout<<endl;
		}
	}
	
	return 0;
}
