intmain(){ int n, m; freopen("in.txt", "r", stdin); while (scanf("%d%d", &n, &m), n || m) { for (int i = 1; i <= m; i++) dp[i] = false; dp[0] = true; for (int i = 0; i < n; i++) scanf("%d", &v[i]); for (int i = 0; i < n; i++) scanf("%d", &c[i]); for (int i = 0; i < n; i++) { int w = c[i] * v[i]; if (c[i] == 1) { for (int j = m; j >= v[i]; j--) { if (dp[j - v[i]]) dp[j] = true; } } elseif (w >= m) { for (int j = v[i]; j <= m; j++) { if (dp[j - v[i]]) dp[j] = true; } } else { for (int j = 0; j < v[i]; j++) { f = b = 0; for (int k = j; k <= m; k += v[i]) { if (f != b && k - id[f] > w) f++; if (dp[k]) { id[b++] = k; } elseif (f != b) { dp[k] = true; } } } } } int ret = 0; for (int i = 1; i <= m; i++) if (dp[i]) ret++; printf("%d\n", ret); } return0; }