#include <iostream>
#include <vector>
#include <cstring>
using namespace std;
//01背包
int dp[40][20000];//数据范围 我没法用一维数组实现
int main()
{
int n,m;
while(cin>>n>>m)
{
memset(dp,0,sizeof(dp));
vector<int> a;
for(int i=0;i<n;i++)
{
int t;
cin>>t;
a.push_back(t);
}
dp[0][6000]=1;
for(int o=1;o<=m;o++)
{
int t;
cin>>t;
for(int i=0;i<20000;i++)
{
for(int j=0;j<n;j++)
{
if((i+t*a[j])>=0)
{
dp[o][i+t*a[j]]=dp[o][i+t*a[j]]+dp[o-1][i];
}
}
}
}
cout<<dp[m][6000]<<endl;
}
return 0;
}