#include<bits/stdc++.h>
#define rep(i,a,b) for(int i=(a);i<=(b);i++)
#define per(i,a,b) for(int i=(a);i>=(b);i--)
#define REP(i,n) for(int i=(0);i<(n);i++)
#define fi first
#define se second
#define pb push_back
#define mp make_pair
#define y1 _y1
using namespace std;
typedef pair<int,int> pii;
typedef vector<int> vi;
typedef long long ll;

template<class T> inline void read(T &x){
	int f=0;x=0;char ch=getchar();
	for(;!isdigit(ch);ch=getchar())f|=(ch=='-');
	for(;isdigit(ch);ch=getchar())x=x*10+ch-'0';
	if(f)x=-x;
}

namespace{
	const int mod=1e9+7,N=2e6+5;
	int power(int x,int p){
		int res=1;
		for(;p;p>>=1,x=(ll)x*x%mod)
			if(p&1)res=(ll)res*x%mod;
		return res;
	}
	int mul(int x,int y){
		return (ll)x*y%mod;
	}
	int fix(int x){
		return x>=mod?x-mod:x;
	}
	void add(int &x,int y){
		x=(x+y>=mod?x+y-mod:x+y);
	}
	int fac[N],rev[N];
	int C(int n,int m){
		return m<0||m>n?0:mul(fac[n],mul(rev[m],rev[n-m]));
	}
	void init(int lim=int(2e6+2)){
		fac[0]=1;
		rep(i,1,lim) fac[i]=mul(fac[i-1],i);
		rev[lim]=power(fac[lim],mod-2);
		per(i,lim,1) rev[i-1]=mul(rev[i],i);
	}
}

int x1,x2,x3,x4,x5,x6;
int y1,y2,y3,y4,y5,y6;
int ans;

int f(int x,int y){
	return fix(C(x+y+2,x+1)+mod-1);
}

int g(int x1,int x2,int y1,int y2){
	if(x1>x2) swap(x1,x2);
	if(y1>y2) swap(y1,y2);
	int res=f(x2,y2);
	add(res,mod-f(x1-1,y2));
	add(res,mod-f(x2,y1-1));
	add(res,f(x1-1,y1-1));
	return res;
}

int main(){
	read(x1),read(x2),read(x3);
	read(x4),read(x5),read(x6);
	read(y1),read(y2),read(y3);
	read(y4),read(y5),read(y6);
	init();
	rep(i,x3,x4){
		int A=g(i-x1,i-x2,y3-y1-1,y3-y2-1);
		int B=g(x5-i,x6-i,y5-y3,y6-y3);
		int C=g(i-x1,i-x2,y4-y1,y4-y2);
		int D=g(x5-i,x6-i,y5-y4-1,y6-y4-1);
		add(ans,mul(mul(A,B),mod-i-y3+1));
		add(ans,mul(mul(C,D),i+y4));
	}
	rep(i,y3,y4){
		int A=g(x3-x1-1,x3-x2-1,i-y1,i-y2);
		int B=g(x5-x3,x6-x3,y5-i,y6-i);
		int C=g(x4-x1,x4-x2,i-y1,i-y2);
		int D=g(x5-x4-1,x6-x4-1,y5-i,y6-i);
		add(ans,mul(mul(A,B),mod-i-x3+1));
		add(ans,mul(mul(C,D),i+x4));
	}
	cout<<ans<<endl;
	return 0;
}