import strutils, sequtils const MOD = int(1e9 + 7) proc `%%`(a: int64, b: int64): int64 = result = (a + b) mod b template `+%=` (a, b: int64) = a = (a + b) mod MOD #template `-%=` (a, b: int64) = a = (a - b) mod MOD template `+%%=` (a, b: int64) = a = (a + b) %% MOD template `-%%=` (a, b: int64) = a = (a - b + MOD) %% MOD proc matmul(a: seq[seq[int64]], b: seq[seq[int64]]): seq[seq[int64]] = var (a, b) = (a, b) result = newSeqWith(a.len, newSeq[int64](b[0].len)) for i in 0.. 0: if (n and 1) == 1: result = matmul(result, a) a = matmul(a, a) n = n shr 1 proc solve1(n: int, k: int, a: seq[int]): tuple[a: int, b: int] = var (k, n, a) = (k, n, a) var y = 0 for i in 0..