#include #include using namespace std; using ll = long long; constexpr ll MOD = 1'000'000'007; int main(){ int n, m; cin >> n >> m; vector v(n), r(m); for(auto &it: v) cin >> it; for(auto &it: r) cin >> it; int a, b; cin >> a >> b; const int lim = 100010; vector vdp(lim, 0), rdp(lim, 0); vdp[0] = 1; rdp[0] = 1; for(auto &it: v){ for(int j = lim-1; j >= 0; j--){ if(j-it >= 0) vdp[j] = (vdp[j]+vdp[j-it])%MOD; } } for(auto &it: r){ for(int j = lim-1; j >= 0; j--){ if(j-it >= 0) rdp[j] = (rdp[j]+rdp[j-it])%MOD; } } for(int i = 1; i < lim; i++) vdp[i] = (vdp[i-1]+vdp[i])%MOD; ll ans = 0; for(ll i = 1; i < lim; i++){ ll va = i*a, vb = i*b; if(va >= 100000) continue; if(vb >= lim) vb = lim-1; ans += (vdp[vb]-vdp[va-1]+MOD)%MOD*rdp[i]%MOD; ans %= MOD; } cout << ans << endl; return 0; }