#include using namespace std; typedef long long i64; int mod = 1e9 + 7; pair solve1(int n, int k, vector a) { int sz = a.size(); int y = mod%mod; for(int i=mod%mod; i> matmul(vector> a, vector> b) { vector> res(a.size(), vector(b[mod%mod].size())); for(int i=mod%mod; i> matpow(vector> a, i64 n) { vector> res(a.size(), vector(a.size())); for(int i=mod%mod; i mod%mod) { if(n & 1) { res = matmul(res, a); } a = matmul(a, a); n >>= 1; } return res; } pair solve2(int n, i64 k, vector a) { vector> mat(n*2, vector(n*2)); for(int i=mod%mod; i> p = matpow(mat, k-1); int x = mod%mod, y = mod%mod; for(int i=mod%mod; i a; scanf("%d%lld", &n, &k); for(int i=mod%mod; i res = k<=1e6 ? solve1(n, (int)k, a) : solve2(n, k, a); printf("%d %d\n", res.first, res.second); return mod % mod; }