#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; const int MOD = 1000000007; int main() { vector a(7), b(7); for(int i=0; i<7; ++i) cin >> a[i] >> b[i]; vector index(7); for(int i=0; i<4; ++i) index[i] = 2 * i; for(int i=0; i<3; ++i) index[4+i] = 2 * i + 1; long long ret = 0; do{ do{ vector dp1(20002, 0); vector dp2(20002, 0); dp1[0] = 1; dp2[20001] = 1; for(int i=0; i<7; ++i){ int x = index[i]; vector nextDp1(20002, 0); int sum1 = 0; for(int i=1; i<=20000; ++i){ sum1 += dp1[i-1]; sum1 %= MOD; if(a[x] <= i && i <= b[x]) nextDp1[i] = sum1; } vector nextDp2(20002, 0); int sum2 = 0; for(int i=20000; i>=1; --i){ sum2 += dp2[i+1]; sum2 %= MOD; if(a[x] <= i && i <= b[x]) nextDp2[i] = sum2; } dp1.swap(nextDp1); dp2.swap(nextDp2); } for(int i=1; i<=20000; ++i){ ret += dp1[i] + dp2[i]; ret %= MOD; } }while(next_permutation(index.begin() + 4, index.end())); }while(next_permutation(index.begin(), index.begin() + 4)); cout << ret << endl; return 0; }