# 7 # 1 3 3 3 4 5 6 # 3 # 2 3 4 # 36541 from collections import Counter def f(n,nums1,m,nums2): def split_to_level(arr,total_node): #将树分层 level=[] cur_node=0 step=1 while cur_node<total_node: level.append(arr[cur_node:cur_node+step]) cur_node+=step step*=2 return level global_cnt=Counter() origin_level=split_to_level(nums1,n) #树分层 ref_level=split_to_level(nums2,m) #树分层 for depth in range(len(origin_level)): if depth <len(ref_level): ref_cnt=Counter(ref_level[depth]) #当前参考树层频次 else: ref_cnt=Counter() ori_cnt=Counter(origin_level[depth]) #当前原始树层频次 for key,val in ori_cnt.items(): x=min(ref_cnt[key],val) #由于使用了Counter(),如果不存在这个键,会直接返回0 a=val-x if a>0: global_cnt[key]+=a if not global_cnt: print(0) return res=[] sorted_global=sorted(global_cnt.items(),key=lambda x :(x[1],x[0]),reverse=True) #返回列表 for i,j in sorted_global: res.append(i) print("".join(map(str,res))) def main(): n=int(input()) nums1=list(map(int,input().split())) m=int(input()) nums2=list(map(int,input().split())) f(n,nums1,m,nums2) if __name__=="__main__": main()