n = gets.not_nil!.to_i a = gets.not_nil!.split.map(&.to_i) b = gets.not_nil!.split.map(&.to_i) # The Ruby code equivalent result = -(0...n).map do |i| rotated_b = b.rotate(i) heap = a.map { |v| v * ~n }.sort rotated_b.map do |l| m = heap.pop + (l // 2) * ~n - 1 insert_index = heap.bsearch_index { |v| v > m } || heap.size heap.insert(insert_index, m) m % ~n end.min end.max puts result