#include <cstdio>
const int N=2000005,mo=1000000007;
typedef long long LL;
LL fac[N],inv[N],ans=0;
int U,D,L,R;
LL ksm(LL x,int y){
	LL i=1;
	for (;y;y>>=1,(x*=x)%=mo)
		if (y&1) (i*=x)%=mo;
	return i;
}
LL C(int n,int m){
	return fac[n]*inv[m]%mo*inv[n-m]%mo;
}
LL F(int a,int b,int c,int d){
	return C(c+d-a-b,c-a);
}
void calc(int x1,int y1,int x2,int y2,bool f){
	LL cnt=0;
	for (int i=L;i<=R;i++) cnt-=F(x1,y1,U-1,i)*F(U,i,x2,y2)%mo*(U-1+i);
	for (int i=L;i<=R;i++) cnt+=F(x1,y1,D,i)*F(D+1,i,x2,y2)%mo*(D+i);
	for (int i=U;i<=D;i++) cnt-=F(x1,y1,i,L-1)*F(i,L,x2,y2)%mo*(i+L-1);
	for (int i=U;i<=D;i++) cnt+=F(x1,y1,i,R)*F(i,R+1,x2,y2)%mo*(i+R);
	if (f) ans-=cnt;else ans+=cnt;
}
int main(){
	int x[6],y[6],n=N-1;
	fac[0]=1;
	for (int i=1;i<=n;i++) fac[i]=fac[i-1]*i%mo;
	inv[n]=ksm(fac[n],mo-2);
	for (int i=n;i>=1;i--) inv[i-1]=inv[i]*i%mo;
	for (int i=0;i<6;i++) scanf("%d",&x[i]);
	for (int i=0;i<6;i++) scanf("%d",&y[i]);
	x[0]--;y[0]--;x[5]++;y[5]++;
	U=x[2];D=x[3];L=y[2];R=y[3];
	for (int i=0;i<2;i++)
		for (int j=0;j<2;j++)
			for (int k=0;k<2;k++)
				for (int l=0;l<2;l++)
					calc(x[i],y[j],x[4|k],y[4|l],i^j^k^l);
	printf("%lld\n",(ans%mo+mo)%mo);
}