MOD = 10**9 + 7 def main(): import sys N, A, B, K = map(int, sys.stdin.readline().split()) if N == 1: print(A % MOD) return if N == 2: print(B % MOD) return # Mod values for A, B, K A_mod = A % MOD B_mod = B % MOD K_mod = K % MOD # Compute p = (A^2 + B^2 + K) / (A*B) mod MOD numerator = (pow(A_mod, 2, MOD) + pow(B_mod, 2, MOD) + K_mod) % MOD denominator = (A_mod * B_mod) % MOD denominator_inv = pow(denominator, MOD-2, MOD) p = (numerator * denominator_inv) % MOD # Define matrix multiplication def multiply(m1, m2): a = (m1[0][0] * m2[0][0] + m1[0][1] * m2[1][0]) % MOD b = (m1[0][0] * m2[0][1] + m1[0][1] * m2[1][1]) % MOD c = (m1[1][0] * m2[0][0] + m1[1][1] * m2[1][0]) % MOD d = (m1[1][0] * m2[0][1] + m1[1][1] * m2[1][1]) % MOD return [[a, b], [c, d]] # Matrix exponentiation def matrix_power(mat, power): result = [[1, 0], [0, 1]] # Identity matrix while power > 0: if power % 2 == 1: result = multiply(result, mat) mat = multiply(mat, mat) power //= 2 return result # Initialize the transformation matrix mat = [ [p, (MOD - 1) % MOD], [1, 0] ] # Compute matrix raised to (N-2)th power power = N - 2 mat_pow = matrix_power(mat, power) # Compute a_n: mat_pow[0][0] * B_mod + mat_pow[0][1] * A_mod a_n = (mat_pow[0][0] * B_mod + mat_pow[0][1] * A_mod) % MOD print(a_n) if __name__ == "__main__": main()