n, K = map(int, input().split()) C = list(map(int, input().split())) D = list(map(int, input().split())) MOD = 998244353 max_dp = [-1] * (K + 1) max_dp[0] = 0 cnt = [0] * (K + 1) cnt[0] = 1 for s in range(K + 1): if max_dp[s] == -1: continue for i in range(n): ci = C[i] di = D[i] new_s = s + ci if new_s > K: continue new_h = max_dp[s] + di if max_dp[new_s] < new_h: max_dp[new_s] = new_h cnt[new_s] = cnt[s] elif max_dp[new_s] == new_h: cnt[new_s] = (cnt[new_s] + cnt[s]) % MOD max_happiness = 0 total_ways = 0 for s in range(K + 1): if max_dp[s] == -1: continue if max_dp[s] > max_happiness: max_happiness = max_dp[s] total_ways = cnt[s] elif max_dp[s] == max_happiness: total_ways = (total_ways + cnt[s]) % MOD print(max_happiness) print(total_ways % MOD)