#include<cstdio>
#include<algorithm>
#include<cstring>
#include<cmath>
using namespace std;

typedef long long ll;
const int maxn=2000010;
const int mod=1e9+7;

ll fac[maxn], inv[maxn], ans;

ll Pow(ll x,ll y){
	ll ret=1;
	while(y){
		if(y&1) ret = ret*x%mod;
		x = x*x%mod;
		y >>= 1;
	}
	return ret;
}

void init(){
	fac[0]=inv[0]=1;
	for(int i=1;i<maxn;i++) fac[i]=fac[i-1]*i %mod;
	inv[maxn-1] = Pow(fac[maxn-1], mod-2);
	for(int i=maxn-2;i>=1;i--) inv[i]=inv[i+1]*(i+1)%mod;
}
ll C(ll x,ll y){
	return fac[x]*inv[y] %mod *inv[x-y]%mod;
}

ll work(int n,int m){ return C(n+m+2,m+1); }
ll calc(int a,int b,int c,int d){ return (work(c,d)-work(a-1,d)+mod -work(c,b-1)+mod +work(a-1,b-1))%mod; }
int x, y;
ll ret;
int main(){

	init();
	int x1, x2, x3, x4, x5, x6;
	int y1, y2, y3, y4, y5, y6;
	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);

	for(int i=x3;i<=x4;i++){
		x=i, y=y3-1;
		ret=(x+y+1)*calc(x-x2, y-y2, x-x1, y-y1)%mod *calc(x5-x, y5-y-1, x6-x, y6-y-1) %mod;
		ans=(ans+mod -ret)%mod;
	}
	for(int i=y3;i<=y4;i++){
		x=x3-1, y=i;
		ret=(x+y+1)*calc(x-x2, y-y2, x-x1, y-y1)%mod *calc(x5-x-1, y5-y, x6-x-1, y6-y) %mod;
		ans=(ans+mod -ret)%mod;
	}
	for(int i=x3;i<=x4;i++){
		x=i, y=y4;
		ans=(ans+ (x+y+1)*calc(x-x2, y-y2, x-x1, y-y1)%mod *calc(x5-x, y5-y-1, x6-x, y6-y-1) %mod )%mod;
	}
	for(int i=y3;i<=y4;i++){
		x=x4, y=i;
		ans=(ans+ (x+y+1)*calc(x-x2, y-y2, x-x1, y-y1)%mod *calc(x5-x-1, y5-y, x6-x-1, y6-y) %mod )%mod;
	}
	printf("%lld\n",ans);
	return 0;
}