# FIXME: multiple variable assignment in for loop
#
# def func(nums, k):
#     import collections
#     d = collections.defaultdict(int)
#     for row in nums:
#         for i in row:
#             d[i] += 1
#     temp = []
#     import heapq
#     for key, v in d.items():
#         if len(temp) < k:
#             temp.append((v, key))
#             if len(temp) == k:
#                 heapq.heapify(temp)
#         else:
#             if v > temp[0][0]:
#                 heapq.heappop(temp)
#                 heapq.heappush(temp, (v, key))
#     result = []
#     while temp:
#         v, key = heapq.heappop(temp)
#         result.append(key)
#     return result