#include <cstdio>
#include <memory.h>
#include<iostream>
using namespace std;
int dp[21][15001]; //状态数组dp[i][j]
int main(int i,int j,int k)
{
int n; //挂钩数
int g; //钩码数
int c[21]; //挂钩位置
int w[21]; //钩码重量
cin>>n>>g;
for(i=1;i<=n;i++)
cin>>c[i];
for(i=1;i<=g;i++)
cin>>w[i];
memset(dp,0,sizeof(dp)); //达到每个状态的方法数初始化为0
dp[0][7500]=1; //7500为天枰达到平衡状态时的平衡度
for(i=1;i<=g;i++)
for(j=0;j<=15000;j++)
if(dp[i-1][j]) //优化
for(k=1;k<=n;k++)
if(j+w[i]*c[k]<15001)
dp[i][ j+w[i]*c[k] ] += dp[i-1][j]; //状态方程
cout<<dp[g][7500]<<endl;
return 0;
}