#include using i64 = long long; using u64 = unsigned long long; using u32 = unsigned; using u128 = unsigned __int128; using i128 = __int128; void solve() { int N, M; std::cin >> N >> M; std::vector U(N), T(M); for(int i = 0; i < N; i ++) std::cin >> U[i]; for(int i = 0; i < M; i ++) std::cin >> T[i]; int Z = std::accumulate(T.begin(), T.end(), 0); std::vector dp(1e5 + 7); dp[0] = true; for(int i = 0; i < M; i ++) { for(int j = Z; j >= T[i]; j --) { dp[j] = dp[j - T[i]]; } } std::set s; for(int i = 0; i < 1e5 + 7; i ++) { if(!dp[i]) continue; for(int j = 0; j < N; j ++) { s.insert(U[j] + i); } } std::cout << (int)s.size(); } int main() { std::ios::sync_with_stdio(false); std::cin.tie(nullptr); int T = 1; //std::cin >> T; while (T--) { solve(); } return 0; }