#include #include using namespace std; int main() { int N, M; cin >> N >> M; vector U(N + 1, 0); vector T(M + 1, 0); for (int i = 1; i <= N; i++) { cin >> U[i]; } for (int i = 1; i <= M; i++) { cin >> T[i]; } vector> dp(M + 1, vector(1000 * 100 + 1, 0)); dp[0][0] = 1; for (int i = 1; i <= M; i++) { for (int j = 0; j <= 1000 * 100; j++) { if (j >= T[i]) { dp[i][j] = max(dp[i - 1][j], dp[i - 1][j - T[i]]); } else { dp[i][j] = dp[i - 1][j]; } } } vector check(200001, false); for (int i = 1; i <= N; i++) { for (int j = 0; j <= 1000 * 100; j++) { if (dp[M][j] == 1) { check[U[i] + j] = true; } } } int ans = 0; for (int i = 1; i <= 200000; i++) { if (check[i] == true) { ans++; } } cout << ans << "\n"; return 0; }