func main() var nw: int :: cui@inputInt() var w: []int :: #[nw]int for i(0, nw - 1) do w[i] :: cui@inputInt() end for var nb: int :: cui@inputInt() var b: []int :: #[nb]int for i(0, nb - 1) do b[i] :: cui@inputInt() 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