import sys from collections import deque import bisect import copy import heapq import itertools import math input = sys.stdin.readline sys.setrecursionlimit(1000000) # mod = 10 ** 9 + 7 mod = 998244353 def read_values(): return map(int, input().split()) def read_index(): return map(lambda x: int(x) - 1, input().split()) def read_list(): return list(read_values()) def read_lists(N): return [read_list() for n in range(N)] def main(): T = int(input()) for _ in range(T): N, K = read_values() print(((N * pow(2, (N - 1) * K, mod)) % mod) * (pow(2, K, mod) - 1) % mod) if __name__ == "__main__": main()