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]) # Generate the f array f = [0] * (2 * N) f[0] = seed for i in range(1, 2 * N): f[i] = (a * f[i - 1] + b) % m # Generate items list1 = [] list2 = [] list3 = [] for i in range(N): w = (f[i] % 3) + 1 v = w * f[N + i] if w == 1: list1.append(v) elif w == 2: list2.append(v) else: list3.append(v) # Sort the lists in descending order list1.sort(reverse=True) list2.sort(reverse=True) list3.sort(reverse=True) i3 = 0 i2 = 0 i1 = 0 total = 0 remaining = K while remaining > 0: max_val = -1 best_i3 = i3 best_i2 = i2 best_i1 = i1 # Option 3 if i3 < len(list3): current = list3[i3] if current > max_val: max_val = current best_i3 = i3 + 1 best_i2 = i2 best_i1 = i1 # Option 2+1 if i2 < len(list2) and i1 < len(list1): current = list2[i2] + list1[i1] if current > max_val: max_val = current best_i3 = i3 best_i2 = i2 + 1 best_i1 = i1 + 1 # Option 1+1+1 if i1 + 2 < len(list1): current = list1[i1] + list1[i1 + 1] + list1[i1 + 2] if current > max_val: max_val = current best_i3 = i3 best_i2 = i2 best_i1 = i1 + 3 # Option 2 if i2 < len(list2): current = list2[i2] if current > max_val: max_val = current best_i3 = i3 best_i2 = i2 + 1 best_i1 = i1 # Option 1+1 if i1 + 1 < len(list1): current = list1[i1] + list1[i1 + 1] if current > max_val: max_val = current best_i3 = i3 best_i2 = i2 best_i1 = i1 + 2 # Option 1 if i1 < len(list1): current = list1[i1] if current > max_val: max_val = current best_i3 = i3 best_i2 = i2 best_i1 = i1 + 1 if max_val == -1: break # No more items to choose total += max_val remaining -= 1 i3, i2, i1 = best_i3, best_i2, best_i1 print(total) if __name__ == '__main__': main()