## https://yukicoder.me/problems/no/3515 MOD = 998244353 def prod_vec(matrix, vec): n = len(matrix) new_vec = [0] * n for i in range(n): for j in range(n): new_vec[i] += (matrix[i][j] * vec[j]) % MOD new_vec[i] %= MOD return new_vec def prod(left, right): n = len(left) new_matrix = [[0] * n for _ in range(n)] for i in range(n): for j in range(n): for k in range(n): new_matrix[i][j] += (left[i][k] * right[k][j]) % MOD new_matrix[i][j] %= MOD return new_matrix def main(): N, K = map(int, input().split()) vector = [0] * (4 * N + 1) vector[0] = 1 matrix = [[0 for _ in range(4 * N + 1)] for _ in range(4 * N + 1)] for i in range(4 * N): if i % 4 == 0: matrix[i + 1][i] = pow(5, MOD - 2, MOD) matrix[0][i] = (4 * pow(5, MOD - 2, MOD)) % MOD else: matrix[i + 1][i] = pow(5, MOD - 2, MOD) matrix[1][i] = pow(5, MOD - 2, MOD) matrix[0][i] = (3 * pow(5, MOD - 2, MOD)) % MOD while K > 0: if K % 2 == 1: vector = prod_vec(matrix, vector) matrix = prod(matrix, matrix) K //= 2 print(vector[-1]) if __name__ == "__main__": main()