def main(): import sys input = sys.stdin.read data = input().split() N = int(data[0]) K = int(data[1]) seed = int(data[2]) a = int(data[3]) b = int(data[4]) m = int(data[5]) f = [0] * (2 * N) f[0] = seed for i in range(1, 2 * N): f[i] = (a * f[i-1] + b) % m w1 = [] w2 = [] w3 = [] for i in range(N): wi = (f[i] % 3) + 1 vi = wi * f[N + i] if wi == 1: w1.append(vi) elif wi == 2: w2.append(vi) else: w3.append(vi) w1.sort(reverse=True) w2.sort(reverse=True) w3.sort(reverse=True) pre_sum_w1 = [0] * (len(w1) + 1) for i in range(len(w1)): pre_sum_w1[i+1] = pre_sum_w1[i] + w1[i] i3 = 0 i2 = 0 i1 = 0 total = 0 remaining = K while remaining > 0: options = [] if i3 < len(w3): options.append((w3[i3], '3')) if i2 < len(w2) and i1 < len(w1): options.append((w2[i2] + w1[i1], '21')) if i1 + 3 <= len(w1): val = pre_sum_w1[i1 + 3] - pre_sum_w1[i1] options.append((val, '111')) if not options: break max_option = max(options, key=lambda x: x[0]) if max_option[1] == '3': total += max_option[0] i3 += 1 elif max_option[1] == '21': total += max_option[0] i2 += 1 i1 += 1 else: total += max_option[0] i1 += 3 remaining -= 1 print(total) if __name__ == "__main__": main()