def lcgs(a, b, x_0, m=2**32): x = x_0 while True: x = (a*x + b) % m yield x def f(lst): return [lst[0:i+1] for i in range(len(lst))] def get_space(xs, step, n_people=2): return [sum(x) for x in f(xs[step::n_people])] def num_black(lst_space): return sum([1 for s in lst_space if s % 2 == 1]) def num_white(lst_space): return sum([1 for s in lst_space if s % 2 == 0]) def cal_score(n_black, n_white): return min([n_black, n_white]) n = 2 a, b, x_0, N = tuple(map(int, input().split())) g = lcgs(a, b, x_0) xs = [next(g) for i in range(n*N)] space = [get_space(xs, i) for i in range(n)] score = [cal_score(num_black(lst), num_white(lst)) for lst in space] score = [" ".join(map(str, score))] p = list(map(print, score))