# 从输入中读取第一行,然后分割字符串并取分割后的列表从第二个元素到最后一个元素
I = input().split(' ')[1:]
# 从输入中读取第二行,然后分割字符串并取分割后的列表从第二个元素到最后一个元素
R = input().split(' ')[1:]
# 将R列表中的每个元素转换为整数
R = list(map(int, R))
# 将R列表转换为集合以去除重复元素,然后再转换回列表
R = list(set(R))
# 对R列表进行排序
R.sort()
# 初始化结果列表
res = []
# 遍历排序后的R列表
for r in R:
# 初始化临时列表
tmp = []
# 遍历I列表,同时获取索引和值
for idx, val in enumerate(I):
# 如果R中的当前元素r转换为字符串后存在于I中的当前元素val中
if str(r) in str(val):
# 将当前索引和值添加到临时列表中
tmp = tmp + [str(idx), str(val)]
# 如果临时列表不为空
if tmp:
# 将R中的当前元素r和临时列表长度的一半(因为索引和值成对出现)添加到临时列表前面
tmp = [str(r), str(len(tmp)//2)] + tmp
# 将临时列表的内容添加到结果列表中
res = res + tmp
# 将结果列表的长度添加到结果列表的最前面
res = [str(len(res))] + res
# 打印结果列表,元素之间用空格分隔
print(*res)