#include #include #include using namespace atcoder; using mint = modint1000000007; using namespace std; #define rep(i,n) for (int i = 0; i < (n); ++i) #define Inf 1000000000 vector ika(vector mini,vector maxi){ int n = mini.size(); vector dp(20001,vector(1<(2,0))); dp[0][0][0] = 1; for(int i=0;i<20000;i++){ rep(j,1<>l)&1)continue; if(mini[l]<=i+1&&i+1<=maxi[l]){ dp[i+1][j|(1< ret(20001,0); rep(i,dp.size()){ ret[i] += dp[i][(1< more(vector mini,vector maxi){ int n = mini.size(); vector dp(20001,vector(1<(2,0))); dp.back()[0][0] = 1; for(int i=20000;i>=1;i--){ rep(j,1<>l)&1)continue; if(mini[l]<=i&&i<=maxi[l]){ dp[i-1][j|(1< ret(20001,0); rep(i,dp.size()){ rep(j,2){ ret[i] += dp[i][(1< m(7),M(7); rep(i,7)cin>>m[i]>>M[i]; vector x = {m[0],m[2],m[4],m[6]}; vector y = {M[0],M[2],M[4],M[6]}; vector z = {m[1],m[3],m[5]}; vector w = {M[1],M[3],M[5]}; auto a = ika(x,y); auto b = more(z,w); auto c = more(x,y); auto d = ika(z,w); mint ans = 0; rep(i,a.size()){ ans += a[i] * b[i]; ans += c[i] * d[i]; } cout<