#include #include #include using namespace std; constexpr int64_t MOD = 1'000'000'007; int main(void) { int64_t N, M, A, B; cin >> N >> M; vector V(N), R(M); for(int i=0; i> V[i]; } for(int j=0; j> R[j]; } cin >> A >> B; vector cntV(100000), cntR(100000); cntV[0] = 1; cntR[0] = 1; for(int i=0; i=0; k--) { if(k+V[i] >= 100000) continue; cntV[k+V[i]] += cntV[k]; cntV[k+V[i]] %= MOD; } } for(int i=1; i<100000; i++) { cntV[i] += cntV[i-1]; cntV[i] %= MOD; } for(int j=0; j=0; k--) { if(k+R[j] >= 100000) continue; cntR[k+R[j]] += cntR[k]; cntR[k+R[j]] %= MOD; } } int64_t ans = 0; for(int k=1; k<100000; k++) { ans += cntR[k] * (cntV[min(B*k,99999L)] - cntV[min(A*k-1,99999L)]); ans %= MOD; } if(ans < 0) ans += MOD; cout << ans << endl; return 0; }