#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
const int mod=1e9+7;
int add(int x,int y){return x+y<mod?x+y:x+y-mod;}
void ade(int& x,int y){x+=y;if(x>=mod)x-=mod;}
int qpow(int x,int k)
{
	int r=1;
	while(k)
	{
		if(k&1)r=1ll*r*x%mod;
		k>>=1;x=1ll*x*x%mod;
	}
	return r;
}
int fac[2000200],ifac[2000200];
void init()
{
	int ma=2e6+10;fac[0]=1;
	for(int i=1;i<=ma;++i)fac[i]=1ll*fac[i-1]*i%mod;
	ifac[ma]=qpow(fac[ma],mod-2);
	for(int i=ma-1;i>=0;--i)ifac[i]=1ll*ifac[i+1]*(i+1)%mod;
}
int C(int x,int y)
{
	if(x<y||x<0||y<0)return 0;
	return 1ll*fac[x]*ifac[y]%mod*ifac[x-y]%mod;
}
int x1,x2,x3,x4,x5,x6;
int y1,y2,y3,y4,y5,y6;
int g(int n,int m) { return add(C(n+m+2,m+1),mod-1); }
int f(int x,int y,int X1,int Y1,int X2,int Y2)
{
	int sx=abs(X1-x),mx=abs(X2-x);if(sx>mx)swap(sx,mx);
	int sy=abs(Y1-y),my=abs(Y2-y);if(sy>my)swap(sy,my);
	int res=(0ll+g(mx,my)-g(sx-1,my)-g(mx,sy-1)+g(sx-1,sy-1)+mod+mod)%mod;
	return res;
}
int calc(int X1,int X2,int Y1,int Y2){return C(X2-X1+Y2-Y1,X2-X1);}
int main()
{
	init();
	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);
	int p,q,u,v;
	int ans=0,ta;
	for(int i=x3;i<=x4;++i)
	{
		p=i,q=y4+1;
		ta=1ll*f(p,q-1,x1,y1,x2,y2)*f(p,q,x5,y5,x6,y6)%mod*(p+q)%mod;
		ade(ans,ta);
		u=i,v=y3-1;
		ta=1ll*f(u,v,x1,y1,x2,y2)*f(u,v+1,x5,y5,x6,y6)%mod*(u+v+1)%mod;
		ade(ans,mod-ta);
	}
	for(int i=y3;i<=y4;++i)
	{
		p=x4+1,q=i;
		ta=1ll*f(p-1,q,x1,y1,x2,y2)*f(p,q,x5,y5,x6,y6)%mod*(p+q)%mod;
		ade(ans,ta);
		u=x3-1,v=i;
		ta=1ll*f(u,v,x1,y1,x2,y2)*f(u+1,v,x5,y5,x6,y6)%mod*(u+v+1)%mod;
		ade(ans,mod-ta);
	}
	printf("%d\n",ans);
	return 0;
}
