func main() var ss: [][]char var Nw: int :: cui@input().toInt(&) var W: []int :: #[Nw]int do ss :: cui@input().split(" ") for i(0, Nw - 1) do W[i] :: ss[i].toInt(&) end for var Nb: int :: cui@input().toInt(&) var B: []int :: #[Nb]int do ss :: cui@input().split(" ") for i(0, Nb - 1) do B[i] :: ss[i].toInt(&) end for do W.sort() do W.reverse() do B.sort() do B.reverse() var wb: [][]int :: [W, B] var ans: int for i(0, 1) var id: int :: i var idxWb: []int :: [0, 0] do idxWb[id] :: 1 var lastSize: int :: wb[id][0] do id :: 1 - id var num: int :: 1 while loop1(true) while loop2(true) if(idxWb[id] = ^wb[id]) break loop1 end if if(wb[id][idxWb[id]] < lastSize) do lastSize :: wb[id][idxWb[id]] do num :+ 1 break loop2 end if do idxWb[id] :+ 1 end while do id :: 1 - id end while do ans :: [ans, num].max() end for do cui@print("\{ans}\n") end func