#include<bits/stdc++.h>
using namespace std;

#define y0 yy
#define y1 yyy

const int maxn=2000005;
const int mod=1e9+7;
void Add(int &a,int b){
	a+=b;
	if(a>=mod)a-=mod;
}
void Sub(int &a,int b){
	a-=b;
	if(a<0)a+=mod;
} 
int s,x1,x2,x3,x4,x5,x6,y1,y2,y3,y4,y5,y6;
int fac[maxn],ifac[maxn];
pair<int,int>posA[4],posB[4];
int C(int a,int b){
	if(a<0||b<0||a<b)return 0;
	return 1LL*fac[a]*ifac[b]%mod*ifac[a-b]%mod;
}

int calc(int sx,int sy,int tx,int ty){
	int res=0;
	for(int i=x3;i<=x4;i++){
		Sub(res,1LL*C(i-sx+y3-sy-1,i-sx)*C(tx-i+ty-y3,tx-i)%mod*(i-sx+y3-sy)%mod);
		Add(res,1LL*C(i-sx+y4-sy,i-sx)*C(tx-i+ty-y4-1,tx-i)%mod*(i-sx+y4-sy+1)%mod);
	}
	for(int i=y3;i<=y4;i++){
		Sub(res,1LL*C(x3-sx-1+i-sy,x3-sx-1)*C(tx-x3+ty-i,tx-x3)%mod*(x3-sx+i-sy)%mod);
		Add(res,1LL*C(x4-sx+i-sy,x4-sx)*C(tx-x4-1+ty-i,tx-x4-1)%mod*(x4-sx+i-sy+1)%mod);
	}
	return res;
}

int main(){
	scanf("%d%d%d%d%d%d",&x1,&x2,&x3,&x4,&x5,&x6);
	scanf("%d%d%d%d%d%d",&y1,&y2,&y3,&y4,&y5,&y6);
	s=(max(x6,y6)+2)*2;
	fac[0]=fac[1]=ifac[0]=ifac[1]=1;
	for(int i=2;i<=s;i++){
		fac[i]=1LL*fac[i-1]*i%mod;
		ifac[i]=1LL*ifac[mod%i]*(mod-mod/i)%mod;
	}
	for(int i=1;i<=s;i++)ifac[i]=1LL*ifac[i-1]*ifac[i]%mod;
	int ans=0;
	posA[0]=make_pair(x1-1,y1-1);
	posA[1]=make_pair(x1-1,y2);
	posA[2]=make_pair(x2,y2);
	posA[3]=make_pair(x2,y1-1);
	posB[0]=make_pair(x5,y5);
	posB[1]=make_pair(x5,y6+1);
	posB[2]=make_pair(x6+1,y6+1);
	posB[3]=make_pair(x6+1,y5);
	for(int i=0;i<4;i++)for(int j=0;j<4;j++){
		int cur=calc(posA[i].first,posA[i].second,posB[j].first,posB[j].second);
		if((i+j)&1)Sub(ans,cur);
		else Add(ans,cur);
	}
	printf("%d\n",ans);
	return 0;
}