#include <bits/stdc++.h>
#define endl '\n'
using namespace std;
using ll = long long;
int dp[3010][3010];
int n,m;
ll pre[3010];
ll a[3010];
ll b[3010];
int MOD = 1000000007;
ll sum;
bool ok = true;
void sub1() {
dp[0][0] = 1;
for(int j = 1; j <= m; j++){
for(int i = j; i <= n; i++){
for(int k = j - 1; k < i; k++){
sum = pre[i] - pre[k];
if(sum % b[j] == 0){
dp[i][j] += dp[k][j-1];
if(dp[i][j] >= MOD)
dp[i][j] -= MOD;
}
}
}
}
cout << dp[n][m];
}
void sub2() {
dp[0][0] = 1;
for(int i = 1; i < n ; i++){
dp[i][0] = 1;
dp[i][i] = 1;
for(int j = 1; j < i; j++){
dp[i][j] = dp[i-1][j-1] + dp[i-1][j];
if(dp[i][j] >= MOD){
dp[i][j] -= MOD;
}
}
}
cout << dp[n-1][m-1];
}
int main(){
ios_base::sync_with_stdio(false);
cin.tie(NULL);
freopen("DIVGROUP.INP","r",stdin);
freopen("DIVGROUP.OUT","w",stdout);
cin >> n >> m;
for(int i = 1; i <= n; i++){
cin >> a[i];
pre[i] += pre[i-1] + a[i];
}
for(int j = 1; j <= m; j++){
cin >> b[j];
if(b[j] != 1)
ok = false;
}
if(ok) sub2();
else sub1();
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CiNkZWZpbmUgZW5kbCAnXG4nCnVzaW5nIG5hbWVzcGFjZSBzdGQ7CnVzaW5nIGxsID0gbG9uZyBsb25nOwoKaW50IGRwWzMwMTBdWzMwMTBdOwppbnQgbixtOwpsbCBwcmVbMzAxMF07CmxsIGFbMzAxMF07CmxsIGJbMzAxMF07CmludCBNT0QgPSAxMDAwMDAwMDA3OwpsbCBzdW07CmJvb2wgb2sgPSB0cnVlOwoKdm9pZCBzdWIxKCkgewogICAgZHBbMF1bMF0gPSAxOwogICAgZm9yKGludCBqID0gMTsgaiA8PSBtOyBqKyspewogICAgICAgIGZvcihpbnQgaSA9IGo7IGkgPD0gbjsgaSsrKXsKICAgICAgICAgICAgZm9yKGludCBrID0gaiAtIDE7IGsgPCBpOyBrKyspewogICAgICAgICAgICAgICAgc3VtID0gcHJlW2ldIC0gcHJlW2tdOwogICAgICAgICAgICAgICAgaWYoc3VtICUgYltqXSA9PSAwKXsKICAgICAgICAgICAgICAgICAgICBkcFtpXVtqXSArPSBkcFtrXVtqLTFdOwogICAgICAgICAgICAgICAgICAgIGlmKGRwW2ldW2pdID49IE1PRCkKICAgICAgICAgICAgICAgICAgICAgICAgZHBbaV1bal0gLT0gTU9EOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQogICAgY291dCA8PCBkcFtuXVttXTsKfQoKdm9pZCBzdWIyKCkgewogICAgZHBbMF1bMF0gPSAxOwogICAgZm9yKGludCBpID0gMTsgaSA8IG4gOyBpKyspewogICAgICAgIGRwW2ldWzBdID0gMTsKICAgICAgICBkcFtpXVtpXSA9IDE7CiAgICAgICAgZm9yKGludCBqID0gMTsgaiA8IGk7IGorKyl7CiAgICAgICAgICAgIGRwW2ldW2pdID0gZHBbaS0xXVtqLTFdICsgZHBbaS0xXVtqXTsKICAgICAgICAgICAgaWYoZHBbaV1bal0gPj0gTU9EKXsKICAgICAgICAgICAgICAgIGRwW2ldW2pdIC09IE1PRDsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KICAgIGNvdXQgPDwgZHBbbi0xXVttLTFdOwp9CgppbnQgbWFpbigpewogICAgaW9zX2Jhc2U6OnN5bmNfd2l0aF9zdGRpbyhmYWxzZSk7CiAgICBjaW4udGllKE5VTEwpOwogICAgZnJlb3BlbigiRElWR1JPVVAuSU5QIiwiciIsc3RkaW4pOwogICAgZnJlb3BlbigiRElWR1JPVVAuT1VUIiwidyIsc3Rkb3V0KTsKICAgIGNpbiA+PiBuID4+IG07CiAgICBmb3IoaW50IGkgPSAxOyBpIDw9IG47IGkrKyl7CiAgICAgICAgY2luID4+IGFbaV07CiAgICAgICAgcHJlW2ldICs9IHByZVtpLTFdICsgYVtpXTsKICAgIH0KICAgIGZvcihpbnQgaiA9IDE7IGogPD0gbTsgaisrKXsKICAgICAgICBjaW4gPj4gYltqXTsKICAgICAgICBpZihiW2pdICE9IDEpCiAgICAgICAgICAgIG9rID0gZmFsc2U7CiAgICB9CiAgICBpZihvaykgc3ViMigpOwogICAgZWxzZSBzdWIxKCk7CiAgICByZXR1cm4gMDsKfQo=