ONE4EVER - Forever Alone Person

Tags: matrix, math, dp

Problem

https://vn.spoj.com/problems/ONE4EVER

https://oj.vnoi.info/problem/ONE4EVER

Dù thông minh, đẹp trai, học giỏi nhưng vẫn không thoát khỏi kiếp FA vì chỉ có 8cm và lười tắm, Khánh 3508 lại buồn bã trở về vnoi code lại từ đầu. Trong một ngày chán như con gián, Khánh 3508 nhổ trộm bông hướng dương nhà hàng xóm và ngồi … đếm cánh hoa. Mỗi lần một cánh hoa rụng xuống là câu nói “Tắm”, “Không tắm” lại vang lên. Đã ba năm trôi qua Khánh 3508 vẫn chỉ ngồi đếm lá và chưa tắm rồi đột nhiên anh ta đứng lên và chạy về máy tính : “Đúng rồi số ngẫu nhiên!”. Hóa ra Khánh 3508 đã nghĩ ra cách làm mới mà không phải nhổ trộm hoa + ngồi đếm số cánh hoa. Chúng ta biết rằng số ngẫu nhiên được sinh ra bởi bộ ba số a,b,m theo quy tắc:

  • Số thứ nhất là x1=b mod m
  • Số thứ k là (a*xk-1+b) mod m với k>1

Khánh 3508 sẽ lấy số xk để so với lịch xem nó có phải ngày đẹp hay không để quyết định tắm rửa. Tuy nhiên do thích chơi trội Khánh 3508 đã để a,b,m,k rất lớn khiến máy tính bị đơ. Bạn hãy giúp Khánh tính xk thật nhanh để cậu ta có thể tắm.

Input

  • Dòng 1: Số nguyên T (1≤T≤10) là số lượng test
  • T dòng tiếp theo, mỗi dòng gồm 4 số nguyên a,b,m,k (1≤a,b,m,k≤10^15)

Output

  • Gồm T dòng, mỗi dòng in ra số xk tương ứng.

Example

Input
3  
1 1 1 1  
2 5 100 6  
1 8 777 6

Output
0  
15  
48  

Hình ảnh minh họa:

 


Tutorial


Submission

ONE4EVER.cpp