#include <cstdio>

const int MOD=1000000007;
const int MAXN=2100011;

int sr;
int sum(int a, int b){
	sr=a+b;
	if(sr>=MOD)	sr-=MOD;
	return sr;
}

int mul(int a, int b){
	return (int)((1LL*a*b)%(long long)(MOD));
}

int pow(int a, int k){
	int ret=1, t=a;
	while(k){
		if(k&1)	ret=mul(ret, t);
		t=mul(t, t);
		k>>=1;
	}
	return ret;
}

int N;
int Fac[MAXN], Inv[MAXN];
int X[6], Y[6];

int C(int n, int m){
	return mul(Fac[n], mul(Inv[m], Inv[n-m]));
}

int Way(int x, int y){
	return C(x+y, y);
}

int Way(int xl, int yl, int xr, int yr){
	return Way(xr-xl, yr-yl);
}

int Calc(int xl, int yl, int xr, int yr){
	
	int ret=0;
	for(int i=X[2], y;i<=X[3];++i){
		y=Y[2]-1;
		ret=sum(ret, MOD-mul(mul(Way(xl, yl, i, y), Way(i, y+1, xr, yr)), (i-xl)+(y-yl)));
		y=Y[3];
		ret=sum(ret, mul(mul(Way(xl, yl, i, y), Way(i, y+1, xr, yr)), (i-xl)+(y-yl)));
	}
	
	for(int i=Y[2], x;i<=Y[3];++i){
		x=X[2]-1;
		ret=sum(ret, MOD-mul(mul(Way(xl, yl, x, i), Way(x+1, i, xr, yr)), (x-xl)+(i-yl)));
		x=X[3];
		ret=sum(ret, mul(mul(Way(xl, yl, x, i), Way(x+1, i, xr, yr)), (x-xl)+(i-yl)));
	}
	
	return ret;
}

int main(){
	
	N=2100000;
	Fac[0]=1;
	for(int i=1;i<=N;++i)	Fac[i]=mul(Fac[i-1], i);
	Inv[N]=pow(Fac[N], MOD-2);
	for(int i=N;i>=1;--i)	Inv[i-1]=mul(Inv[i], i);
	
	for(int i=0;i<6;++i)	scanf("%d", &X[i]);
	for(int i=0;i<6;++i)	scanf("%d", &Y[i]);
	
	int Ans=0;
	
	Ans=sum(Ans, Calc(X[0]-1, Y[0]-1, X[5]+1, Y[5]+1));
	Ans=sum(Ans, Calc(X[1], Y[1], X[5]+1, Y[5]+1));
	Ans=sum(Ans, MOD-Calc(X[0]-1, Y[1], X[5]+1, Y[5]+1));
	Ans=sum(Ans, MOD-Calc(X[1], Y[0]-1, X[5]+1, Y[5]+1));
	Ans=sum(Ans, Calc(X[0]-1, Y[0]-1, X[4], Y[4]));
	Ans=sum(Ans, Calc(X[1], Y[1], X[4], Y[4]));
	Ans=sum(Ans, MOD-Calc(X[0]-1, Y[1], X[4], Y[4]));
	Ans=sum(Ans, MOD-Calc(X[1], Y[0]-1, X[4], Y[4]));
	Ans=sum(Ans, Calc(X[1], Y[0]-1, X[4], Y[5]+1));
	Ans=sum(Ans, Calc(X[0]-1, Y[1], X[4], Y[5]+1));
	Ans=sum(Ans, MOD-Calc(X[0]-1, Y[0]-1, X[4], Y[5]+1));
	Ans=sum(Ans, MOD-Calc(X[1], Y[1], X[4], Y[5]+1));
	Ans=sum(Ans, Calc(X[1], Y[0]-1, X[5]+1, Y[4]));
	Ans=sum(Ans, Calc(X[0]-1, Y[1], X[5]+1, Y[4]));
	Ans=sum(Ans, MOD-Calc(X[0]-1, Y[0]-1, X[5]+1, Y[4]));
	Ans=sum(Ans, MOD-Calc(X[1], Y[1], X[5]+1, Y[4]));
	
	printf("%d\n", Ans);
	
	return 0;
}