## https://yukicoder.me/problems/no/2429 MOD = 998244353 def main(): N, K = map(int ,input().split()) C = list(map(int ,input().split())) D = list(map(int ,input().split())) dp = [[-1, 0] for _ in range(K + 1)] dp[0][0] = 0 dp[0][1] = 1 for from_i in range(K + 1): if dp[from_i][1] == 0: continue for i in range(N): c = C[i] d = D[i] if c + from_i <= K: new_i = c + from_i if dp[new_i][0] < d + dp[from_i][0]: dp[new_i][0] = d + dp[from_i][0] dp[new_i][1] = dp[from_i][1] elif dp[new_i][0] == d + dp[from_i][0]: dp[new_i][1] += dp[from_i][1] dp[new_i][1] %= MOD answer = [-1, 0] for k in range(K + 1): if answer[0] < dp[k][0]: answer[0] = dp[k][0] answer[1] = dp[k][1] elif answer[0] == dp[k][0]: answer[1] += dp[k][1] answer[1] %= MOD print(answer[0]) print(answer[1]) if __name__ == "__main__": main()