public void Solve() { var n = sc.Integer(); var A = sc.Long(); var B = sc.Long(); var a = new BigInteger[n]; for (int i = 0; i < n; i++) { a[i] = sc.Long(); } Array.Sort(a); if (A == 1) { for (int i = 0; i < n; i++) { IO.Printer.Out.WriteLine(a[i]); } return; } while (B > 0) { if (a[n - 1] < a[0] * A) { break; } a[0] *= A; Array.Sort(a); Debug.WriteLine(a.AsJoinedString()); B--; } Debug.WriteLine(B); var k = B / n; var rem = B % n; while (rem > 0) { a[0] *= A; Array.Sort(a); rem--; } for (int i = 0; i < n; i++) { var v = a[i] % 1000000007; v = (v * ModInteger.Pow(A, k).num) % 1000000007; IO.Printer.Out.WriteLine(v); } }