local mmi, mma = math.min, math.max local mfl = math.floor local function get_ary_from_idx(idx, n) idx = idx - 1 local box = {} for i = 1, n do box[i] = true end local rettbl = {} for i = n, 1, -1 do local pos = idx % i + 1 idx = mfl(idx / i) local cnt = 0 for j = 1, n do if box[j] then cnt = cnt + 1 if cnt == pos then box[j] = false table.insert(rettbl, j) break end end end end return rettbl end local n = io.read("*n") local a = {} for i = 1, n do a[i] = io.read("*n") end local b = {} for i = 1, n do b[i] = io.read("*n") end local retval, retcnt = -1, 0 local allpat = 1 for i = 1, n do allpat = allpat * i end for i = 1, allpat do local z = get_ary_from_idx(i, n) local v = 0 for j = 1, n do v = v + mma(0, a[z[j]] - b[j]) end if retval < v then retval, retcnt = v, 1 elseif retval == v then retcnt = retcnt + 1 end end print(retcnt)