Cho hàm f(t)=A⋅t+B. Bắt đầu từ x và áp dụng f đúng n lần; hãy tính giá trị cuối cùng theo modulo 1000000007.
Input
Một dòng chứa bốn số nguyên A,B,n,x theo đúng thứ tự này.
Output
In f lặp đúng n lần tại x, lấy modulo 1000000007.
Constraints
1≤A,B,x≤109.
1≤n≤1018.
Scoring
Subtask 1 (50% số điểm): n≤106.
Subtask 2 (50% số điểm): không có giới hạn bổ sung.
Example
Test 1
Input
2 5 4 3
Output
123
Giải thích: Bốn lần áp dụng hàm cho dãy 3→11→27→59→123, nên kết quả là 123.
Lời giải tóm tắt
Phân tích: Thêm một tọa độ hằng 1 để biến phép biến đổi affine thành phép biến đổi tuyến tính: [t,1]^T -> [[A,B],[0,1]][t,1]^T.
Thuật toán: Nâng ma trận 2×2 lên lũy thừa n, nhân với [x,1]^T và lấy tọa độ đầu.
Chứng minh tính đúng đắn: Một lần nhân tạo đúng [A·t+B,1]^T. Quy nạp theo số lần lặp cho thấy ma trận lũy thừa n tạo đúng giá trị sau n lần áp dụng; cách này đúng cả khi A=1 vì không dùng phép chia.