#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int N=2000005,M=2e6;
const long long mod=1e9+7;
long long fac[N],inv[N],xx[10],yy[10],ans;
long long qpow(long long x,long long k)
{
	if(k==1) return x;
	long long tmp=qpow(x,k/2);
	return k%2?tmp*tmp%mod*x%mod:tmp*tmp%mod;
}
void Prework()
{
	register int i; fac[0]=inv[0]=1;
	for(i=1;i<=M;i++) fac[i]=fac[i-1]*i%mod;
	inv[M]=qpow(fac[M],mod-2);
	for(i=M-1;i;i--) inv[i]=inv[i+1]*(i+1)%mod;
	for(i=1;i<=6;i++) scanf("%lld",&xx[i]);
	for(i=1;i<=6;i++) scanf("%lld",&yy[i]);
}
long long C(int a,int b)
{
	return fac[a]*inv[b]%mod*inv[a-b]%mod;
}
long long Ca(int x1,int y1,int x2,int y2,int x3,int y3)
{  
	long long ret=0,lx1=x3-x2-1,lx2=x2-x1,ly1=y3-y2-1,ly2=y2-y1;
	for(int i=x1;i<=x2;i++) ret+=C(ly1+x3-i,ly1)*C(ly2-x1+i,ly2)%mod*(ly2-x1+i+1)%mod,ret%=mod;
	for(int i=y1;i<=y2;i++) ret+=C(lx1+y3-i,lx1)*C(lx2-y1+i,lx2)%mod*(lx2-y1+i+1)%mod,ret%=mod;
	return ret;
}
long long Cal(int x1,int y1,int x2,int y2)
{
	long long ret=0;
	ret+=Ca(x1,y1,xx[4],yy[4],x2,y2);
	ret-=Ca(x1,y1,xx[3]-1,yy[4],x2,y2);
	ret-=Ca(x1,y1,xx[4],yy[3]-1,x2,y2);
	ret+=Ca(x1,y1,xx[3]-1,yy[3]-1,x2,y2);
	return (ret%mod+mod)%mod;
}
long long Calc(int x,int y)
{
	long long ret=0;
	ret+=Cal(x,y,xx[6]+1,yy[6]+1);
	ret-=Cal(x,y,xx[5],yy[6]+1); 
	ret-=Cal(x,y,xx[6]+1,yy[5]);
	ret+=Cal(x,y,xx[5],yy[5]);
	return (ret%mod+mod)%mod;
}
int main()
{
	Prework();
	ans+=Calc(xx[2],yy[2]);
	ans-=Calc(xx[1]-1,yy[2]);
	ans-=Calc(xx[2],yy[1]-1);
	ans+=Calc(xx[1]-1,yy[1]-1);
	printf("%lld",(ans%mod+mod)%mod);
	return 0;
}