Point: 100.0
Time limit: 1.0s
Memory limit: 586 M
Input: stdin
Output: stdout
Author:  
Problem type
Ngôn ngữ cho phép
C, C#, C++, Java, Pascal, Python, Text

Ta định nghĩa hàm số

\[ f(x) = \begin{cases} a & \quad \text{nếu } x = 1\\ b & \quad \text{nếu } x = 2\\ (a \times f(x-1) + b \times f(x-2)) \pmod{MOD}\ & \quad \text{nếu } x \ge 3 \end{cases} \]

Dữ liệu

Một dòng duy nhất ghi \(4\) số nguyên dương \(a,\ b,\ N,\ MOD\ (a,\ b,\ N,\ MOD \le 10^{18})\)

Kết quả

In ra một số nguyên duy nhất là giá trị của \(f(N).\)

Ví dụ

INPUT OUTPUT
\(2\ 3\ 7\ 10005\) \(912\)

Giải thích

Với \(a = 2,\ b = 3,\ N = 7\)\(MOD = 10005\), ta có:

  • \(i = 1, f(1) = 2\)

  • \(i = 2, f(2) = 3\)

  • \(i = 3, f(3) = 12\)

  • \(i = 4, f(4) = 33\)

  • \(i = 5, f(5) = 102\)

  • \(i = 6, f(6) = 303\)

  • \(i = 7, f(7) = 912\)

Giới hạn

  • Subtask \(1\ (20\%\) số test\():\) \(a, b, N \le 10^5; MOD \le 10^{9}\)
  • Subtask \(2\ (20\%\) số test\():\) \(a, b, N \le 10^5\)
  • Subtask \(3\ (30\%\) số test\():\) \(a, b, N \le 10^9; MOD \le 10\)
  • Subtask \(4\ (10\%\) số test\():\) \(a, b, N \le 10^9; MOD \le 10^{9}\)
  • Subtask \(5\ (20\%\) số test\():\) Không có ràng buộc gì thêm.