n = gets.chomp.to_i a, b = [], [] n.times do _a, _b = gets.split.map(&:to_i) a.push(_a); b.push(_b) end inf = 1_000_000_000 dp = Array.new(1 << n) { inf } dp[0] = 0 (1 << n).times do |state| next if dp[state] == inf cnt = state.to_s(2).count("1") day = cnt - cnt / 3 n.times do |i| next if (state & (1 << i)) > 0 s, nexstate = dp[state] + a[i] + b[i] * day, state ^ (1 << i) if day % 2 == 1 if nexstate == ((1 << n) - 1) dp[nexstate] = s if s < dp[nexstate] else n.times do |j| next if (nexstate & (1 << j)) > 0 dp[nexstate ^ (1 << j)] = s if s < dp[nexstate ^ (1 << j)] end end else dp[nexstate] = s if s < dp[nexstate] end end end puts dp[(1 << n) - 1]